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

How to place QWidget() at right end in QStatusBar()

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_())

谢谢!

QStatusBar class has an addPermanentWidget从右边开始添加的方法

所以你可以简单地改变:

 statusBar.addWidget(QLabel("message to right end"))

至:

 statusBar.addPermanentWidget(QLabel("message to right end"))

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

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