Qt学习--创建对话框
2011-02-27 16:46
435 查看
第二章 创建对话框 总结笔记 2.1子类化对话框class QCheckBox; class QLabel; class QLineEdit; class QPushButton;
通过前向声明,编译器就知道这个类已经存在,而不用写出包含的头文件。label = new QLabel(tr("Find &what:"));// 快捷键:Alt+W lineEdit = new QLineEdit; label->setBuddy(lineEdit);//设置行编辑器作为标签的伙伴,可以在按下标签的快捷键时 接受焦点findButton->setDefault(true);//让Find按扭成为默认按扭(按下Enter键时能够按下的对应按扭)
2.2深入信号和槽(Signals and Slots in Depth)
槽和普通的c++成员函数很像。它们可以是虚函数(virtual),也可被重载(overload),可以是公有的(public),
保护的(protective),也可是私有的(private),它们可以象任何c++成员函数一样被调用,可以传递任何类型的参数。
不同在于一个槽函数能和一个信号相连接,
只要信号发出了,这个槽函数就会自动被调用。
connect函数语法如下:
connect(sender, SIGNAL(signal), receiver, SLOT(slot));
sender和receiver是QObject对象指针,signal和slot是不带参数的函数原型。
SIGNALE()和SLOT()宏的作用是把他们转换成字符串。
在目前有的例子中,我们已经连接了不同的信号和槽。
实际使用中还要考虑如下一些规则:
1、一个信号可以连接到多个槽:
connect(slider, SIGNAL(valueChanged(int)),spinBox, SLOT(setValue(int)));
connect(slider, SIGNAL(valueChanged(int)),this, SLOT(updateStatusBarIndicator(int)));
当信号发出后,槽函数都会被调用,但是调用的顺序是随机的,不确定的。
2、多个信号可以连接到一个槽
connect(lcd, SIGNAL(overflow()), this, SLOT(handleMathError()));
connect(calculator, SIGNAL(divisionByZero()),this, SLOT(handleMathError()));
任何一个信号发出,槽函数都会执行。
3、一个信号可以和另一个信号相连
connect(lineEdit, SIGNAL(textChanged(const QString &)), this,
SIGNAL(updateRecord(const QString &)));
第一个信号发出后,第二个信号也同时发送。
除此之外,信号与信号连接上和信号和槽连接相同。
4、连接可以被删除
disconnect(lcd, SIGNAL(overflow()),this, SLOT(handleMathError()));
这个函数很少使用,一个对象删除后,Qt自动删除这个对象的所有连接。
信号和槽函数必须有着相同的参数类型,这样信号和槽函数才能成功连接:
connect(ftp, SIGNAL(rawCommandReply(int, const QString &)),this,
SLOT(processReply(int, const QString &)));
如果信号里的参数个数多于槽函数的参数,多余的参数被忽略:
connect(ftp, SIGNAL(rawCommandReply(int, const QString &)),this, SLOT(checkErrorCode(int)));
如果参速类型不匹配,或者信号和槽不存在,在debug状态时,Qt会在运行期间给出警告。
如果信号和槽连接时包含了参数的名字,Qt将会给出警告。
2.3快速设计对话框
快速设计就是用QtDesigner.可以用QtDesigner来设计一个界面,保存为.ui文件.
.#include <QApplication> #include <QDialog> #include "ui_gotocelldialog.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); Ui::GoToCellDialog ui; //由uic工具自动生成的ui_gotocelldialog.h文件里包含了 //Ui::GoToCellDialog的类定义 QDialog *dialog = new QDialog; ui.setupUi(dialog); //setupUi用于初始化窗体 dialog->show(); return app.exec(); }
2.4改变形状的对话框
最常见的改变形状的对话框有两种:扩展对话框和多页对话框.
2.5动态对话框
动态对话框就是在程序运行时使用的从Qt设计师的.ui文件创建而来的那些对话框.
动态对话框不需要通过uic把.ui文件转换成C++代码.
2.6内置的窗口部件类和对话框类
这个就有好多了.
相关文章推荐
- Qt学习之对话框与主窗口的创建
- QT学习笔记2:创建对话框
- Qt之GUI学习笔记(四)——创建对话框
- Qt学习(二) 创建对话框,添加按钮
- Qt学习之对话框与主窗口的创建
- Qt多线程学习:创建多线程
- Qt多线程学习:创建多线程
- QT学习 第一章:基本对话框--各种信息框的使用
- MFC入门学习之控件(2)创建一个对话框窗口并在运行时显示
- OpenGL_Qt学习笔记之_01(创建一个OpenGL窗口)
- OpenGL学习笔记(七):创建第一个Qt5.9.3 OpenGL工程模版(与平台无关)
- PyQt学习笔记01-Qt基本概念进阶篇之窗口布局,对话框
- qt学习之各种对话框的实现
- QT 初阶 第二章 创建对话框(查找对话框实例)
- QT创建透明对话框
- CAD二次开发学习笔记二(创建一个对话框)
- QT5 学习之路21---文件对话框
- Qt多线程学习:创建多线程
- Qt对话框部分学习
- Qt 学习 第5节 Qt之创建并使用共享库