我有一个PyQt应用程序,它有一个主窗口和一些对话框,一些模态,一些不是。该应用程序是跨平台的,但此特定问题特定于Windows。
如果对话框不是父对象(模态或非对象),则它在与主窗口相同的组下有自己的任务栏条目,但任务栏标题始终为“python”。调用setWindowTitle()在主窗口上按预期运行,但仅影响其他对话框的标题栏。我玩过窗口标志,并通过PyWin32寻找低级别,特定于Windows的方法,但到目前为止还没有运气。
我还可以做些什么来修改未授权对话框的任务栏标题?
(旁注:如果我是非模态对话框,则任务栏不是问题,但这些对话框总是在主窗口的顶部,这是不可取的)
(旁注2:由于外部依赖性,我现在仅限于Qt 4.5.3和PyQt 4.5.4)
下面是一些展示问题的示例代码。这是一个简单的QMainWindow,带有用于弹出对话框的按钮。主窗口在任务栏中显示为“主窗口”。如果单击“打开未实现的对话框”按钮,对话框的标题栏中会出现标题“无实现”,但任务栏显示为“python”。
import sys
from PyQt4 import QtCore, QtGui
mainWindow = None
def openDialog(parent):
global mainWindow
dialog = QtGui.QDialog(parent)
layout = QtGui.QVBoxLayout()
buttonBox = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Cancel)
buttonBox.rejected.connect(dialog.reject)
layout.addWidget(buttonBox)
dialog.setLayout(layout)
dialog.setWindowTitle('Parented' if parent is not None else 'Unparented')
dialog.exec_()
def openUnparentedDialog():
openDialog(None)
def openParentedDialog():
openDialog(mainWindow)
def main():
global mainWindow
app = QtGui.QApplication(sys.argv)
mainWindow = QtGui.QMainWindow()
mainWidget = QtGui.QWidget()
mainWindow.setCentralWidget(mainWidget)
layout = QtGui.QVBoxLayout()
mainWidget.setLayout(layout)
button1 = QtGui.QPushButton('Open Unparented Dialog')
button1.clicked.connect(openUnparentedDialog)
layout.addWidget(button1)
button2 = QtGui.QPushButton('Open Parented Dialog')
button2.clicked.connect(openParentedDialog)
layout.addWidget(button2)
mainWindow.setWindowTitle('Main Window')
mainWindow.show()
app.exec_()
if __name__ == '__main__':
main()