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