2

I am having a little problem with a pop up dialog.I have a combobox,which when the option changes it pops up a dialog with a textedit widget,do some stuff and insert some text in the textedit widget.

这是我用于弹出窗口的内容:

def function_1(self):
    dialog = QDialog()
    dialog.ui = Ui_Dialog_popup()
    dialog.ui.setupUi(dialog)
    dialog.setAttribute(QtCore.Qt.WA_DeleteOnClose)
    dialog.exec_()

我在一个单独的 py 文件中有在 QtDesignere 中制作的弹出 gui 代码。

弹出对话框出现,但如果对话框没有关闭,则不能执行其他任何操作。你知道我该如何处理吗?谢谢。

4

3 回答 3

5

这正是该exec方法的QDialog设计目的:模态对话框。阅读“模态”和“无模态对话框”部分。

如果您没有阻止您的主 UI 的对话框,请调用show()而不是exec()(并检查modal属性文档)。

于 2011-12-11T11:57:34.063 回答
1

详细说明 Mat 所说的: show() 函数立即返回,并且由于对话框是该函数的本地,因此一旦“function_1”返回,该对象就会被删除。您可能希望使对话框成为成员或全局(以适合您的要求为准),以便对象保留在内存中。

高温高压

于 2011-12-11T15:17:48.490 回答
0

由于您正在设置WA_DeleteOnClosewindow 属性,我假设您希望每次function_1调用该方法时都创建一个新对话框(这可能是一个好主意)。

如果是这样,解决您的问题的最简单方法(基于您提供的代码)是为您的对话框提供父级(因此它保持活动状态),然后使用以下方式无模式show()显示它:

def function_1(self):
    dialog = QDialog(self)
    dialog.ui = Ui_Dialog_popup()
    dialog.ui.setupUi(dialog)
    dialog.setAttribute(QtCore.Qt.WA_DeleteOnClose)
    dialog.show()
于 2011-12-11T17:57:48.907 回答