PDA

View Full Version : PyQt: Fix tab order in tabbed widgets of QMainWindow



Studentik
25th December 2009, 19:48
Hello All!

There is a difference in how tab captions return to QMainWindow's tab captions area when using QDockWidget:

1) Double-clicking dock widget caption converts tabbed window to floating window.
2) Double-clicking floating window caption returns tab caption to it's previous position (tab order does not change)
3) Dragging window back to tabbed widgets returns tab caption to zero-position (tab order changes)
How do I make order not to change?
Thank you!

Python version is 3.1.1.final.0
Qt version is 4.5.3
PyQt version is 4.6.2


To reproduce problem, I made small python module:


from PyQt4 import Qt as qt
import sys

app = qt.QApplication(sys.argv)
mw = qt.QMainWindow()
mw.setWindowState(qt.Qt.WindowMaximized)
mw.setTabPosition(qt.Qt.LeftDockWidgetArea,qt.QTab Widget.North)

mw.dockwidgets = []
for i in range(5):
dw = qt.QDockWidget(str(i+1))
dw.setWidget(qt.QTextEdit("""
1) Double-clicking dock widget caption converts tabbed window to floating window.<br>
2) Double-clicking floating window caption returns tab caption to it's previous position (<b>tab order does not change</b>)<br>
3) Dragging window back to tabbed widgets returns tab caption to zero-position (<b>tab order changes</b>)<br>
How do I make order not to change? Thank you!<br>
Python version is %s<br>
Qt version is %s<br>
PyQt version is %s<br>
""" % (("%s."*5)[0:-1] % tuple(sys.version_info), qt.qVersion(),qt.PYQT_VERSION_STR)))
mw.dockwidgets.append(dw)
mw.addDockWidget(qt.Qt.LeftDockWidgetArea, mw.dockwidgets[i])
if i > 0: mw.tabifyDockWidget(mw.dockwidgets[i-1],mw.dockwidgets[i])

mw.show()
res = app.exec_()
sys.exit(res)

Please help! Thank you!