【问题标题】:How to place QWidget() at right end in QStatusBar()如何将 QWidget() 放在 QStatusBar() 的右端
【发布时间】:2026-01-24 05:10:02
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: python qt4 pyqt4


    【解决方案1】:

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

    所以你可以简单地改变:

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

    到:

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

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

    一个不同但丑陋的解决方案是在QStatusBar 中添加一个小部件,使其覆盖所有栏,并将小部件添加到此栏的布局中。

    【讨论】:

    • 我喜欢你的“丑陋”解决方案;它可以防止临时消息与小部件重叠,使它们都无法读取
    最近更新 更多