Qt界面编程基本操作
了解基本代码构成
类widget的头文件widget.h如下:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QDebug>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{ //信号与槽相关宏
Q_OBJECT
public:
//构造且使用explicit(显式)方式进行, parent = 0表示不指定父对象.
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
//槽函数
void on_pushButton_clicked();
void on_pushButton_2_clicked();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
常用基础知识
查看帮助
- 光标放到对应单词上, 点击F1, 即可进入对应单词的帮助.
- Qt左边导航菜单进入帮助.
- /Qt/Qt5.x/5.x/mingwxxx_xx/bin/assistant.exe
添加C++11支持
- CONFIG += C++11
指定父对象的两种方式
- 一种通过对象的setParent属性
- 一种是构造对象时通过构造函数传参QPushButton(QWidget *p);
- 好处:
- 父窗口显示, 子窗口就显示(父对象要在子对象创建后调用show()).
- 父窗口结束, 自动回收所有子窗口内存.
新建多个窗口
- 在添加类时选择Base Class, 一般选择Qwidget较多.
- 多个窗口的头文件放到主窗口的头文件中, 作为主窗口的对象成员来使用.
信号与槽
- 信号函数和槽函数均没有返回值.
- connect(sender, signal, 接收对象, 槽函数), 每个参数都是指针类型:
//按下按钮1, 则按钮2隐藏
connect(&btn1, &QPushButton::pressed, &btn2, &QPushButton::hide);
- 转到槽
对象的常见操作
- 隐藏对象
Obj.hide()
- 显示对象
Obj.show();
- 设置对象的显示字符
Obj.setText("xxx");
- 移动对象
Obj.move(100, 100)
- 窗口持续运行等待用户操作, 该函数会造成窗口阻塞, 当创建模态对话框时, 调用此函数阻塞. 此函数之后的代码将在关闭窗口时执行.
a.exec();
- 设定窗口大小
resize(400, 300);
- 发送信号
- 声明信号(信号没有返回值, 但可以有参数, 信号只需声明, 无需定义)
signals:
void mySignal();
- 发送信号
emit mySignal();