我希望我有一个简单的问题。我有一个pyqt mainwindow
,它有一个mdi
区域用于子窗口。我希望能够从当前子窗口获取标题文本并将其设置为变量。
我这样做的原因是,当您点击我主窗口的其他部分时,我会打开mdi
个子窗口来编辑已输入的数据。我希望用户能够一次打开和编辑多组数据,我在标题栏中设置数据的目录键。我认为这是区分当前正在编辑哪组数据的好方法。
我不确定这是不是最好的方式,也不是实现我想要的好方法。如果有另一种方法会更好,我很乐意听到它。
感谢你所有的时间。
答案 0 :(得分:2)
QMdiArea
提供方法QMdiArea::activeSubWindow()
以及信号QMdiArea::subWindowActivated()
。
QMdiSubWindow
(直接)来自QWidget
,后者又提供了QWidget::windowTitle
属性。
完全放弃它,它应该有用。
我准备了MCVE作为"概念证据" (并训练我的Python / PyQt技能)。
示例代码testQMDIActiveSubWindow.py
:
#!/usr/bin/python3
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QMdiArea, QMdiSubWindow
def updateActiveChild(subWindow):
win.setWindowTitle("MDI Test: '%s'" % subWindow.windowTitle())
if __name__ == '__main__':
app = QApplication(sys.argv)
# build GUI
win = QMainWindow()
win.resize(640, 480)
mdiArea = QMdiArea()
for title in ["Data:1", "Data:2", "Data:3", "Data:n"]:
mdiChild = QMdiSubWindow()
mdiChild.setWindowTitle(title)
mdiArea.addSubWindow(mdiChild)
mdiArea.tileSubWindows()
win.setCentralWidget(mdiArea)
win.show()
updateActiveChild(mdiArea.activeSubWindow())
# install signal handlers
mdiArea.subWindowActivated.connect(updateActiveChild)
# exec. application
sys.exit(app.exec_())
我在python3,cygwin64,Windows 10(64位)中测试过它:
活动子窗口的标题反映在主窗口的标题中。