Qt 的介绍
跨平台 c++ 图形用户界面应用程序框架
Qt 的框架
父类 (基类) 子类(派生类)
头文件 QApplication 应用程序类
Qt 头文件没有. h
头文件和类名一样
有且只有一个应用程序类的对象
窗口默认是隐藏, 需要人为显示
项目文件
Q_OBJECT 信号与槽需要这个
pro 文件中, TARGET 可以更改项目生成的名字
第一个 Qt 程序
如果不指定父对象, 对象和对象没有关系, 独立
a 指定 b 为它的父对象, a 放在 b 的上面
指定父对象, 只需要父对象显示, 上面的子对象自动显示
父窗口和子窗口的区别(控件, 部件, 构件)
信号和槽
信号发出者(指针类型), 处理的信号, 信号接收者, 信号处理函数
自定义槽(普通函数的用法), 可以是任意的成员函数, 普通全局函数, 静态函数
槽函数需要和信号一致(参数, 返回值)
信号必须有 signals 关键字来声明
信号没有返回值, 但可以有参数
信号就是函数的声明, 只需声明, 无需定义
信号可以重载, Qt4 可以用宏 signal 和 slot 关键字连接信号, 编译的时候不对 signal 错误检查, 槽函数需要 slots: 声明, Qt5 如果有重载需要指针定义
QSting 转换成可识别的字符 str.toUtf8().data()
用 Lamda 形式可以不用写槽函数
坐标系统
对于父窗口, 坐标系统相对于屏幕
原点, 屏幕左上角; x, 往右; y, 往下
子窗口, 相对于父窗口
内存回收机制
1, 指定父对象, 2 直接或间接继承
继承 QOBJECT, 对象树可以自动释放内存
子对象如果是动态分配空间的 new, 不需要手动释放 delete
带菜单栏的窗口
模态窗口
QDialog dlg;dlg.exrc(); 循环, 不关闭窗口无法操作其他窗口
非模态窗口
1,QDialog dlg;dlg.show(); 会一闪而过, 直接运行过这条语句
2,QDialog *dlg1 =new QDialog(this); 放子函数里, 会不断增加内存
3,QDialog *dlg1 =new QDialog;dlg1->setAttribute(Qt::WA_DeleteOnClose);dlg1->show(); 不指定父对象, 设置窗口关闭时, 释放内存. 显示.
对话框
QMessageBox,QFileDialog
来源: http://www.bubuko.com/infodetail-2551504.html