QT使用

part 1:工程创建

纯c++项目:New Project--非qt项目--纯c++项目

桌面应用程序:Application--QT Widget Application 在后面选择的时候类信息选择QWidget 这个比较简单适合入门选择

 

part 2:基础小项目:加减

选择widget.ui进入主窗口设置界面,如要设置对button的相应,右键button按钮,选择转到漕,会自动生成一个事件函数,在里面可进行处理

其他信息不用修改,只要在时间响应里添加函数即可,代码功能实现两个数的加法

 1 #include "widget.h"
 2 #include "ui_widget.h"
 3 
 4 Widget::Widget(QWidget *parent) :
 5     QWidget(parent),
 6     ui(new Ui::Widget)
 7 {
 8     ui->setupUi(this);
 9 }
10 
11 Widget::~Widget()
12 {
13     delete ui;
14 }
15 
16 void Widget::on_pushButton_clicked()
17 {
18     QString str1 = ui->lineEdit->text();  //接收输入框输入的信息
19     QString str2 = ui->lineEdit_2->text();
20     int a = str1.toInt();
21     int b = str2.toInt();
22     int c = a+b;
23 
24     QString str3 = QString::number(c);  // 把int类型的c强制转换为字符串类型
25     ui->label->setText(str3);//setText()接受的只能是QString类型,因此需要转换类型
26 }
widget.cpp

 ----------------------------------------------------------------------------------------------------------------------------------

如果在创建工程不选择创建界面,则不会包含上面提到的界面文件,需要自己用代码设置界面,一般实际项目中也是这样做的

main函数没有做出任何改变

 1 #ifndef WIDGET_H
 2 #define WIDGET_H
 3 
 4 #include <QWidget>
 5 #include <QPushButton>  //添加按钮的头文件
 6 #include <QHBoxLayout>  //添加横向布局部件的头文件
 7 #include <QVBoxLayout>  //添加纵向布局的头文件
 8 #include <QGridLayout>   //添加grid的布局控件,能够做到精确的行列布局
 9 #include <QLineEdit>    // 添加输入控件的头文件
10 #include <QLabel>      //添加label控件的插件
11 
12 
13 class Widget : public QWidget
14 {
15     Q_OBJECT
16 
17 public:
18     Widget(QWidget *parent = 0);
19     ~Widget();
20     QPushButton *btn1; // 定义一个指针
21     QHBoxLayout *layout1, *layout2,*layout3;
22     QGridLayout *layout4;
23     QLineEdit   *edit1,*edit2,*edit3;
24     QLabel      *lable1,*lable2,*lable3;
25 private slots:
26     void on_click();
27 };
28 
29 #endif // WIDGET_H
widget.h
 1 #include "widget.h"
 2 
 3 Widget::Widget(QWidget *parent)   // 构造函数
 4     : QWidget(parent)
 5 {
 6 
 7 
 8     /*  初始版本的布局
 9     layout1 = new QHBoxLayout(this);  //实例化,this指的是widget窗口,意思是在窗口内加入布局
10     // QHBoxLayout表示横向布局,如果要上下布局则要采用 QVBoxLayout
11     btn1 = new QPushButton;  // 实例化出button
12     layout1->addWidget(btn1);  // 在布局内加入按钮
13     btn1->setText("确认");  // 修改按钮的名称
14 
15     edit1 = new QLineEdit;
16     layout1->addWidget(edit1);  //添加输入框
17     edit2 = new QLineEdit;
18     layout1->addWidget(edit2);  //添加输入框
19     edit3 = new QLineEdit;
20     layout1->addWidget(edit3);  //添加输入框
21 
22     lable1 = new QLabel;
23     layout1->addWidget(lable1);
24     */
25 
26     // 采用Grid的布局
27     btn1 = new QPushButton;
28     edit1 = new QLineEdit;
29     edit2 = new QLineEdit;
30     edit3 = new QLineEdit;
31     lable1 = new QLabel;
32 
33     layout4 = new QGridLayout(this);
34     layout4->addWidget(btn1, 0, 0);//(0,0)代表位于第几行,第几列
35     layout4->addWidget(edit1, 0, 1);
36     layout4->addWidget(edit2, 0, 2);
37     layout4->addWidget(edit3, 1, 0);
38     layout4->addWidget(lable1, 1, 1);
39     btn1->setText("确定");
40 
41     connect(btn1,SIGNAL(clicked()),this,SLOT(on_click())); //实现控件与槽函数的关联
42     //connect(控件,SIGNAL(clicked()),this,SLOT(响应函数))
43 }
44 
45 Widget::~Widget()
46 {
47   //只要控件具有集成关系,即与widget有关,在关闭时就会自动析构,不必再释放内存。但若某一控件没有继承,则要手动释放
48 }
49 void Widget::on_click()
50 {
51     int a = edit1->text().toInt();
52     int b = edit3->text().toInt();
53     if (edit2->text() == "+")
54         lable1->setText(QString::number(a + b));
55     if (edit2->text() == "-")
56         lable1->setText(QString::number(a - b));
57     if (edit2->text() == "*")
58         lable1->setText(QString::number(a * b));
59     if (edit2->text() == "/")
60     {
61         if (b != 0)
62            lable1->setText(QString::number(a / b));
63     }
64 }
widget.cpp

part 3:Qt语法

1、qt从lineinput接收的认为是QString,需要转换后相应的数据类型后才能处理

QString str1 = ui->lineEdit->text();   int a = str1.toInt();    转换为整型

QString str1 = ui->lineEdit->text();  const char *s = str2.toStdString().data(); char c = s[0]; 先转换为char*(字符串型),如果要用到某一字符,再从里面取出即可

2、alt+enter---快速定义一个函数到指定位置

原文地址:https://www.cnblogs.com/youngao/p/9309149.html