Qt入门(对话框)

来源:互联网 发布:java报表 编辑:程序博客网 时间:2024/05/16 10:32

简介

  1. Qt 支持模态对话框和非模态对话框。其中,Qt 有两种级别的模态对话框:应用程序级别的模态和窗口级别的模态,默认是应用程序级别的模态。应用程序级别的模态是指,当该种模态的对话框出现时,用户必须首先对对话框进行交互,直到关闭对话框,然后才能访问程序中其他的窗口。窗口级别的模态是指,该模态仅仅阻塞与对话框关联的窗口,但是依然允许用户与程序中其它窗口交互。
  2. QDialog::exec()实现应用程序级别的模态对话框,使用QDialog::open()实现窗口级别的模态对话框,使用QDialog::show()实现非模态对话框。
  3. setAttribute()函数设置对话框关闭时,自动销毁对话框。实例:dialog->setAttribute(Qt::WA_DeleteOnClose);
  4. QDialog::exec()是有返回值的,其返回值是QDialog::Accepted(确定)或者QDialog::Rejected(取消)

数据传递

  1. 模态对话框通过dialog.result() //此时不能设置WA_DeleteOnClose(关闭时销毁)属性
  2. 非模态对话框在关闭时可以调用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


  1. 这里写图片描述

  2. 这里写图片描述
  3. 使用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;} 
  1. 我们不能在函数指针中使用函数参数的默认值。这是 C++ 语言的限制:参数默认值只能使用在直接地函数调用中。当使用函数指针取其地址的时候,默认参数是不可见的
0 0
原创粉丝点击