如何在关闭前继承 QMessageBox 和 运行 操作
How to subclass QMessageBox and run operation before closing
我想通过 AcceptRole 在 returns 之前的 QMessageBox 子类中启动一个进程。我不清楚为什么以下内容不起作用:
class Question(QtGui.QMessageBox):
def __init__(self, text):
QtGui.QMessageBox.__init__(self, QtGui.QMessageBox.Question,
"title", text, buttons=QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel)
self.text = text
def accept(self):
# run opertation
print self.text
QtGui.QMessageBox.accept(self)
dial = Question("text")
dial.exec_()
由于 QMessageBox.Ok 的 buttonRole 是 AcceptRole,我希望调用 accept()
。不是这样吗?
如有任何见解,我们将不胜感激。
你的想法是对的。您只需要重新实现虚拟 done() 插槽,而不是虚拟 accept()
插槽:
class Question(QtGui.QMessageBox):
def __init__(self, text):
QtGui.QMessageBox.__init__(
self, QtGui.QMessageBox.Question, "title", text,
buttons=QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel)
self.text = text
def done(self, result):
print self.text
QtGui.QMessageBox.done(self, result)
result
将是被单击按钮的 StandardButton 值(即上例中的 QMessageBox.Ok
或 QMessageBox.Cancel
)。
我想通过 AcceptRole 在 returns 之前的 QMessageBox 子类中启动一个进程。我不清楚为什么以下内容不起作用:
class Question(QtGui.QMessageBox):
def __init__(self, text):
QtGui.QMessageBox.__init__(self, QtGui.QMessageBox.Question,
"title", text, buttons=QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel)
self.text = text
def accept(self):
# run opertation
print self.text
QtGui.QMessageBox.accept(self)
dial = Question("text")
dial.exec_()
由于 QMessageBox.Ok 的 buttonRole 是 AcceptRole,我希望调用 accept()
。不是这样吗?
如有任何见解,我们将不胜感激。
你的想法是对的。您只需要重新实现虚拟 done() 插槽,而不是虚拟 accept()
插槽:
class Question(QtGui.QMessageBox):
def __init__(self, text):
QtGui.QMessageBox.__init__(
self, QtGui.QMessageBox.Question, "title", text,
buttons=QtGui.QMessageBox.Ok | QtGui.QMessageBox.Cancel)
self.text = text
def done(self, result):
print self.text
QtGui.QMessageBox.done(self, result)
result
将是被单击按钮的 StandardButton 值(即上例中的 QMessageBox.Ok
或 QMessageBox.Cancel
)。