【C/C++学院】(13)QT开发技术/QT 基础/QT 信号和槽

Qt是一个跨平台的c++图形用户界面用用程序框架。

Qt安装说明:

windows下环境变量path需要加入以下路径,以便QT写的程序可以离开QT开发环境独立运行C:\Qt\Qt5.2.0\5.2.0\mingw48_32\bin\;C:\Qt\Qt5.2.0\Tools\mingw48_32\bin;linux下需要设置.bash_profile文件PATH中加入/opt/Qt5.2.0/5.2.0/gcc/bin用root用户登录系统,进入/usr/lib目录后执行ln libGL.so.1 libGL.so

1.入门程序

界面程序:求两个整数的和。

用到的控件:

lineEdit

pushButton

label

给按钮添加事件:右键, 转到槽, click信号。

#include "widget.h"#include <QApplication>int main(int argc, char *argv[]){QApplication a(argc, argv);Widget w;w.setWindowTitle("diyige progma");//设置窗口标题w.show();return a.exec();}void Widget::on_pushButton_clicked(){QString s1 = ui->lineEdit->text();//得到lineEdit中用户输入的文本QString s2 = ui->lineEdit_2->text();int a = s1.toInt() + s2.toInt();//将文本转化为整数后相加ui->label->setText(QString::number(a));//将整数转化为QSting类型,然后设置lable的text}

2.qt程序移植

linux下qt程序移植:将windows下面编写的源代码(不要.user)复制到linux系统用户目录下面。cd 回家, 切换到用户的主目录。修改.bash_profile,添加PATH变量中qmake的路径。qmake 命令添加到环境变量中。qmake生成Makefile, 然后make进行编译。编译过程中报错,缺少LG库。以root用户切换到 /usr/lib、 查看 ls libGL.so*发现有待版本号后缀的库文件。libGL.so.1 libGLso.2建立快捷方式:ln libGL.so.1 libGL.so再次编译,生成可执行程序,在图形界面下面,双击执行程序。

3.环境变量的设置

如何在windows下面找到xx.exe程序直接双击,提示找不到库不能运行,需要将qt安装时候的路径为了使qt写的应用程序能够离开qt开发环境单独运行,,需要修改windows下面的path环境变量。C:\Program Files\ARM\ADSv1_2\bin;D:\android_env\android-sdk-windows\platform-tools;%JAVA_HOME%\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\VisualSVN Server\bin;D:\Program Files\TortoiseSVN\bin;D:\Program Files\Altium Designer Summer 09\System;C:\Program Files\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;D:\Qt\Qt5.2.0\Tools\mingw48_32\bin;D:\Qt\Qt5.2.0\5.2.0\mingw48_32\bin

4.用代码实现界面

创建项目,注意去掉对勾。

//dialog.h#ifndef DIALOG_H#define DIALOG_H#include <QDialog>//控件头文件#include <QPushButton>#include <QLineEdit>#include <QLabel>class Dialog : public QDialog{Q_OBJECTpublic:Dialog(QWidget *parent = 0);~Dialog();private:QPushButton *btn1;QLineEdit *edit1, *edit2;QLabel *label1;private slots://槽void add();};#endif // DIALOG_H//dialog.cpp#include "dialog.h"#include <QGridLayout>Dialog::Dialog(QWidget *parent): QDialog(parent){//实例化成员btn1 = new QPushButton(this);edit1 = new QLineEdit(this);edit2 = new QLineEdit(this);label1 = new QLabel(this);btn1->setText("求和");label1->setText("label");QGridLayout *layout = new QGridLayout(this);layout->addWidget(edit1, 0, 0);layout->addWidget(edit2, 0, 1);layout->addWidget(btn1, 1, 0);layout->addWidget(label1, 1, 1);//将btn1的点击事件和add()关联connect(btn1, SIGNAL(clicked()),this, SLOT(add()));}Dialog::~Dialog(){}void Dialog::add(){QString s1 = edit1->text();//得到edit1控件中输入的文本QString s2 = edit2->text();bool ok = false;int a = s1.toInt(&ok, 16);if (ok == false){return;}int b = s2.toInt(&ok, 16);//转化为16进制整数后求和if (ok == false){return;}label1->setText(QString::number(a+b, 16));}//main.cpp#include "dialog.h"#include <QApplication>int main(int argc, char *argv[]){QApplication a(argc, argv);Dialog w;w.setWindowTitle("用代码实现的界面:16进制计算");w.show();return a.exec();}

void Dialog::add(){QString s1 = edit1->text();//得到edit1控件中输入的文本QString s2 = edit2->text();QString s3;//将QString转化为c风格的const char * 字符串//利用sprintf()进行格式化输出s3.sprintf("%s,%s", s1.toStdString().data(), s2.toStdString().data());label1->setText(s3);}

5.控件不要再以任何人说你,因为你不是为任何人而活,你只为自己而活,

【C/C++学院】(13)QT开发技术/QT 基础/QT 信号和槽

相关文章:

你感兴趣的文章:

标签云: