Qt入门(对话框)
2016-04-11 23:29
483 查看
简介
Qt 支持模态对话框和非模态对话框。其中,Qt 有两种级别的模态对话框:应用程序级别的模态和窗口级别的模态,默认是应用程序级别的模态。应用程序级别的模态是指,当该种模态的对话框出现时,用户必须首先对对话框进行交互,直到关闭对话框,然后才能访问程序中其他的窗口。窗口级别的模态是指,该模态仅仅阻塞与对话框关联的窗口,但是依然允许用户与程序中其它窗口交互。QDialog::exec()实现应用程序级别的模态对话框,使用QDialog::open()实现窗口级别的模态对话框,使用QDialog::show()实现非模态对话框。
setAttribute()函数设置对话框关闭时,自动销毁对话框。实例:
dialog->setAttribute(Qt::WA_DeleteOnClose);
QDialog::exec()是有返回值的,其返回值是QDialog::Accepted(确定)或者QDialog::Rejected(取消)
数据传递
模态对话框通过dialog.result()//此时不能设置WA_DeleteOnClose(关闭时销毁)属性
非模态对话框在关闭时可以调用QDialog::accept()或者QDialog::reject()或者更通用的QDialog::done()函数,所以我们可以在这里发出信号。
//!!! Qt 5 // in dialog: void UserAgeDialog::accept() { emit userAgeChanged(newAge); // newAge is an int QDialog::accept(); } // in main window: void MainWindow::showUserAgeDialog() { UserAgeDialog *dialog = new UserAgeDialog(this); connect(dialog, &UserAgeDialog::userAgeChanged, this, &MainWindow::setUserAge); dialog->show(); } // ... void MainWindow::setUserAge(int age) { userAge = age; }
标准对话框 QMessageBox
使用QMessageBox的属性设置 API
QMessageBox msgBox; msgBox.setText(tr("The document has been modified.")); msgBox.setInformativeText(tr("Do you want to save your changes?")); msgBox.setDetailedText(tr("Differences here...")); msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel); msgBox.setDefaultButton(QMessageBox::Save); int ret = msgBox.exec(); switch (ret) { case QMessageBox::Save: qDebug() << "Save document!"; break; case QMessageBox::Discard: qDebug() << "Discard changes!"; break; case QMessageBox::Cancel: qDebug() << "Close document!"; break; }
我们不能在函数指针中使用函数参数的默认值。这是 C++ 语言的限制:参数默认值只能使用在直接地函数调用中。当使用函数指针取其地址的时候,默认参数是不可见的
相关文章推荐
- Qt学习之2D绘图(画刷和画笔)
- qt中文乱码 错误 常量中有换行符
- qt错误
- Qt入门(动作、布局管理器、菜工状)
- Qt——设置Qt应用程序图标
- QT生成的exe发布方式——windeployqt
- Qt入门(常用类、方法、信息槽)
- QT中文乱码解决方法
- Qtcreator 修改工程名字的方法
- Qt 创建文件浏览器
- Qt QString.arg参数的一点注意
- Qt移动应用开发(三):使用精灵图片实现帧动画
- QString 的使用技巧
- qt 中的基本知识
- qt中文乱码问题(1)
- qtreewidget 添加复选按钮
- Qt做发布版,解决声音和图片、中文字体乱码问题
- Ubuntu14.04 x64 qt集成cuda开发
- Qt之等待提示框(QMovie播放gif图片,等待文字变化等)
- 发布的QT程序无法显示图标和图片的问题