什么是模式显示与非模式显示

Posted on Wed, 25 Dec 2024 16:06:37 +0800 by LiangMingJian


模式显示exec_()

模式显示是指,在对话框弹出后,锁住程序直到用户关闭该对话框为止,函数返回一个 DialogCode 结果。在显示期间,用户不可以切换同程序下的其它窗口。

非模式显示show()

非模式显示是指,对话框弹出后,控制权即刻返回给调用函数,在显示期间,用户可以切换同程序下的其它窗口,程序照常运行。

模式与非模式的区别

  • 模式对话框,就是在弹出窗口的时候,整个程序就被锁定了,处于等待状态,直到对话框被关闭。这时往往是需要对话框的返回值进行下面的操作。如:确认窗口。
  • 非模式对话框,在调用弹出窗口之后,调用即刻返回,继续下面的操作。这里只是一个调用指令的发出,不等待也不做任何处理。如:查找框。

模式与非模式的返回值不同,exec()有返回值,show()没有返回值。两者的功能上也有所不同:

  • 调用show()的作用仅仅是将 widget 及其上的内容都显示出来,控制权即刻返回给调用函数。
  • 调用exec()后,调用线程将会被阻塞,锁住程序直到用户关闭该对话框,期间用户不可以切换同程序下的其它窗口直到 Dialog 关闭。