我正在使用self.setWindowFlags(Qt.Tool)
隐藏任务栏上的应用程序。但是,我意识到即使我按下程序右上角的x
,它仍然在后台运行(我在任务管理器/进程上看到它)。这意味着程序无法正常关闭。这是因为我使用self.setWindowFlags(Qt.Tool)
吗?如何修复此问题,该标记选项隐藏程序的图标,但即使我按x
关闭程序,它仍然在后台运行。
答案 0 :(得分:0)
在Qt中,应用程序将继续运行,直到主事件循环收到要退出的信号。在大多数应用程序中,这是在最后一个(或仅)QMainWindow
被销毁时提供的(参见QApp.setQuitOnLastWindowClosed()
)。
在Qt.Tool
上设置QMainWindow
标志会清除WA_QuitOnClose
标志,这意味着关闭窗口将不再发出退出应用程序的信号。但是,您可以在as described in this post on the Qt forum上重新打开此标记。
window = QMainWindow(None, Qt.Tool)
window.show() # must be called before setting Qt::WA_QuitOnClose
window.setAttribute(Qt.WA_QuitOnClose)
或者,您也可以使用QApp.quit()
手动触发退出。
答案 1 :(得分:0)
我找到了解决方案,自行退出按钮并连接如下信号
self.xbutton = QPushButton(self)
self.xbutton.setText("Quit")
self.xbutton.clicked.connect(self.close)
这会正确破坏应用程序。而不是Qt.Tool
使用self.setWindowFlags(QtCore.Qt.FramelessWindowHint)