创建Qt程序
- 使用IDE:QCreator
- 点击创建项目后,下选择项目路径以及给项目起名,名称路径均不能有中文
- 默认创建窗口类,积累有三种选择:QWidget / QMainWindow / QDialog
- main 函数
- QApplication a 应用程序对象,有且仅有一个
- MyWidget w 实例化窗口对象
- w.show() 调用show函数显示窗口
- return a.exec(); 让应用程序进入消息循环机制中,代码阻塞当当前行
QCreator快捷键
- 注释:ctrl + /
- 运行 ctrl + r
- 编译 ctrl + b
- 字体缩放 ctrl + 滚轮
- 查找 ctrl + f
- 整行上下移动 ctrl + shift + ↑/↓
- 帮助文档 F1
- 头文件源文件切换 F4
QPushButton 按钮控件常用API
父类 QAbstractButton (父类 QWidget)
- 包含文件
#include <QPushButton>;
- 创建
QPushButton* pBtn = new QPushButton();
- 常用函数
setParent(QWidget* pWidget);
setText(const QString& text);
move(int, int);
// and so on
- QWidget窗口常用函数 :
修改尺寸resize(int, int);
窗口标题setWindowTitle();
固定尺寸setFixedSize();
等
对象树
当创建的对象在堆区的时候,如果指定的父类是QObject或其子类时,可以不用管理释放的操作,该对象会放入对象树中,在其父类对象析构时自动析构。
一定程度上简化了内存回收机制。
QObject是以对象树的形式组织起来的。
当你创建一个QObject对象时,会看到QObject的构造函数接收一个QObject指针作为参数,这个参数就是parent,也就是父对象指针。这相当于,在创建QObject对象时,可以提供一个其父对象,我们创建的这个QObject对象会自动添加到对象的children()列表。
当父对象析构的时候,这个列表中的所有对象也会被析构。(注意,这里的父对象并不是继承意义上的父类。)
这种机制在GUI程序设计中相当有用。例如,一个按钮有一个QShortcut(快捷键)对象作为其子对象。当我们删除按钮的时候,这个快捷键理应被删除,这是合理的。
信号和槽
- 连接函数:
connect();
- 参数有4个
- 参数一:信号的发送者;
- 参数二:发送的信号(函数地址);
- 参数三:信号的接收者;
- 信号四:处理的槽函数(函数地址);
- 松散耦合的特点
- 案例:点击按钮关闭对话框
- 示例代码:
connect(btn, &QPushButton::clicked, this, &QWidget::close);