在我基於Qt的應用程序(使用PyQt的4.8.6內置),我有一類就是QtGui.QDialog的一個子類:阻止並隱藏QDialog:替代exec_()?
class ModelDialog(QtGui.QDialog):
...
當我運行應用程序的用戶界面,我可以顯示了QDialog像這樣:
def main():
app = QtGui.QApplication(sys.argv)
dialog = ModelDialog()
dialog.exec_()
按照Qt docs和PyQt docs,exec_()
是此QDialog的,缺省爲一個模式窗口(其通過定義防止用戶在應用程序內的任何其他窗口交互)的阻擋功能。這正是在正常情況下發生的情況。
但是,最近,我一直在努力通過整個QApplication調用所有輸入值的默認值,而不是要求用戶輸入任何內容。應用程序的行爲與預期一樣,除了一個方面:調用dialog.exec_()
會導致顯示模式對話框。
我已經能夠找到的唯一解決方法已經趕上showEvent
功能,並及時隱藏窗口,但仍允許顯示一秒鐘的QDialog的對象:
class ModelDialog(QtGui.QDialog):
...
def showEvent(self, data=None):
self.hide()
有沒有辦法阻止完全顯示模態窗口,同時繼續阻止主事件循環?我願意爲愛那裏是這樣的:
def main():
app = QtGui.QApplication(sys.argv)
dialog = ModelDialog()
dialog.setHideNoMatterWhat(True)
dialog.exec_()
(爲此,我嘗試使用QWidget.setVisible(False)
,但dialog.exec_()
設置對話框可見不管怎麼說,這是根據Qt docs預期)
真棒...作品像一個魅力。謝謝! – James