Qt模态与非模态

系统管理员 2023-10-18 19:30 320阅读 0赞

模态是指当子窗口弹出时,焦点始终被强行集中于子窗口,只要子窗口不退出,焦点就不会被释放。非模态正好相反。

从线程角度讲,模态子窗口的线程是阻塞的,父、子窗口各有一个线程,当创建子窗口时,父线程就被子线程阻塞掉;非模态线程不是阻塞型的,父、子线程可以并行运行。

在Qt的模态中,主要用到QDialog的exec()方法:

  1. SonDialog dlg(this);
  2. int res = dlg.exec();
  3. if (res == QDialog::Accepted)
  4. {
  5. QMessageBox::information(this, "INFORMATION", "You clicked OK button!");
  6. }
  7. if (res == QDialog::Rejected)
  8. {
  9. QMessageBox::information(this, "INFORMATION", "You clicked CANCEL button!");
  10. }

通过exec()的返回值判断用户触发的是哪个按钮。

非模态,主要用到了QDialog中的show()方法:

  1. SonDialog *dlg;
  2. dlg = new SonDialog(this);
  3. dlg->show();

发表评论

表情:
评论列表 (有 0 条评论,320人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Qt

    模态是指当子窗口弹出时,焦点始终被强行集中于子窗口,只要子窗口不退出,焦点就不会被释放。非模态正好相反。 从线程角度讲,模态子窗口的线程是阻塞的,父、子窗口各有一个线程,当创