几周以来,我一直在为一些众所周知的GIS免费软件(QGIS)编写一个插件。我遇到了一些小问题。PyQt4 |处理'X' - 在QDialog中退出按钮
我的插件机制是这样的:
.......
class DisplayedWindow(object):
def __init__(self):
#JANEK Main dialog
self.window_plugin = QtGui.QDialog()
self.window_plugin.setWindowModality(QtCore.Qt.WindowModal)
self.window_plugin.setGeometry(150, 150, 750, 675)
self.window_plugin.setWindowTitle('the plugin')
self.window_plugin.setWindowFlags(Qt.WindowMinimizeButtonHint|Qt.WindowMaximizeButtonHint)
............. (GUI, functions, etc.).......
def run(self):
dis_win = self.DisplayedWindow()
if dis_win.window_plugin.exec_():
pass
我知道这是不是建立理所应当的,但我是初学者。没问题的是,这个插件工作的非常好,而且我在编写它的过程中已经走得太远,无法改变程序的整个结构。
我正在寻找的(到目前为止找不到的)是一种处理X-exit红色按钮的方法,因此如果用户不想保存,可能会在关闭窗口之前询问用户变化等
我需要这样的东西self.X_close_button.clicked.connect(lambda: closing_stuff())
有谁知道如何接受呢?或者在这样的对话框中以任何其他方式来控制某人关闭窗口(self.window_plugin)后会发生什么?
祝您有个美好的一天!
非常感谢,但我仍然有一个问题。主窗口是一个对象,而不是一个类。我怎样才能“替换”这个closeEvent()方法呢? 我试过类似的, self.window_plugin.closeEvent()= closeEvent() 但它会导致错误 – Janek
我在答案中添加了更多信息。 – Crispin
如果'QDialog'是'QMainWindow'的子类呢?我如何说我想重写'QDialog'的'closeEvent'方法而不是'QMainWindow'。 – Blinxen