代码之家  ›  专栏  ›  技术社区  ›  David Miró

如何将QWidget()置于QStatusBar()的右端

  •  2
  • David Miró  · 技术社区  · 10 年前

    在里面 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 回复  |  直到 10 年前
        1
  •  6
  •   Bakuriu    10 年前

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

    因此,您可以简单地更改:

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

    收件人:

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

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

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