QMdiArea
提供了一种方法QMdiArea::activeSubWindow()
以及信号QMdiArea::subWindowActivated()
。
QMdiSubWindow
是(直接)从QWidget
派生而来,而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测试它,视窗10(64位):
活性子窗口的标题反映在主窗口的标题。
请显示您的代码 – eyllanesc
我在Qt C++文档中找到了['QMdiArea :: subWindowActivated()'](http://doc.qt.io/qt-5/qmdiarea.html#subWindowActivated)。 ['MDISubWindow'](http://doc.qt.io/qt-5/qmdisubwindow.html)直接来自['QWidget'](http://doc.qt.io/qt-5/qwidget .html),它又有一个属性['windowTitle'](http://doc.qt.io/qt-5/qwidget.html#windowTitle-prop)。我没有在代码中尝试它,但对我而言,这听起来像一个计划... – Scheff