如何在qt中设置小部件的绝对位置

我正在使用QT开发丰富的UI应用程序。

  • 我需要将小工具定位在绝对位置
  • 我应该能够把这个小部件放在后台/前台添加一些效果。
  • 一个简单的例子就是,我必须展示一个锅炉内的水位。

  • 取一个饲料罐图像并嵌入标签。
  • 将进度条放置在饲料罐的中央以显示水位。
  • 现在,在这种情况下,进度条将位于前景中,而标签位于后台。

    问候,


    你只需要创建你的小部件,指出它的父QWidget,然后显示它。

    不要将其添加到父级布局,否则您将无法将其移动到您想要的位置。

    不要忘记指出它的父母,否则它将显示为独立的小部件。

    在这些情况下,您的小部件将被视为QWidget的子项,但不是父级布局的成员。 因此,它将是一个“浮动”的孩子,您必须在调整父母的QWidget时管理它的行为。


    使用QWidget :: move()来设置位置,QWidget :: resize()设置大小并重新实现父级的resizeEvent()处理程序,如果您需要重新定位窗口小部件的父级调整大小。


    除了Patrice Bernassola和Frank Osterfeld的答案之外,堆叠顺序也许是有趣的。 它对应于findChildren获得的孩子的顺序,操纵顺序的方法是使用raise_ (尾部下划线), lowerstackUnder

    使用PySide改变3个可用函数的顺序的例子如下:

    from PySide import QtGui
    
    app = QtGui.QApplication([])
    
    window = QtGui.QWidget()
    window.resize(400, 300)
    window.show()
    
    rA = QtGui.QLabel()
    rA.name='square'
    rA.resize(100, 100)
    rA.setStyleSheet('background-color:red;')
    rA.setParent(window)
    rA.show()
    
    text = QtGui.QLabel('text')
    text.name='text'
    text.setParent(window)
    text.show()
    
    # text was added later than rA: initial order is square under text
    
    rA.raise_()
    rA.lower()
    text.stackUnder(rA)
    
    children = window.findChildren(QtGui.QWidget)
    for child in children:
        print(child.name)
    
    app.exec_()
    
    链接地址: http://www.djcxy.com/p/77395.html

    上一篇: How to set absolute position of the widgets in qt

    下一篇: Doing CORS manually