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

时间:2016-01-29 08:15:19

标签: 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_())

谢谢!

1 个答案:

答案 0 :(得分:4)

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

所以你可以简单地改变:

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

为:

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

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

一个不同但又丑陋的解决方案是将一个小部件添加到QStatusBar并进行大扩展,以便覆盖所有条形图,并将小部件添加到此布局中。