如何将 QWidget() 放在 QStatusBar() 的右端

Dav*_*iró 2 python qt4 pyqt4

QStatusBar()不存在,addStretch()我需要将第三个QWidget始终放置在右端。

你好吗?

from PyQt4.QtGui import * 
from PyQt4.QtCore import * 
import sys

class MyMainWindow(QMainWindow): 

    def __init__(self):
        QMainWindow.__init__(self)

        self.setCentralWidget(QLabel("main widget"))

        statusBar = QStatusBar()
        self.setStatusBar(statusBar)

        statusBar.addWidget(QLabel("message left 1"))
        statusBar.addWidget(QLabel("message left 2"))
        statusBar.addWidget(QLabel("message to right end")) #???

app = QApplication(sys.argv)  
window = MyMainWindow()    
window.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

谢谢你!

Bak*_*riu 7

该类QStatusBar有一个addPermanentWidget从右侧开始添加的方法。

所以你可以简单地改变:

 statusBar.addWidget(QLabel("message to right end"))
Run Code Online (Sandbox Code Playgroud)

到:

 statusBar.addPermanentWidget(QLabel("message to right end"))
Run Code Online (Sandbox Code Playgroud)

请注意,永久小部件的行为与添加到状态栏的普通小部件不同。例如,它们不会被消息遮挡。

另一种不同但丑陋的解决方案是添加一个小部件QStatusBar,并进行较大的拉伸,使其覆盖所有栏,并将该小部件添加到该小部件的布局中。