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

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

问题描述:

我正在使用QT开发丰富的UI应用程序。如何在qt中设置小部件的绝对位置

  1. 我需要绝对位置
  2. 来定位控件,我应该能够把背景/前景的小部件添加一些特效。

一个简单的例子是,我必须显示一个锅炉与饲料罐内的水位。

  1. 取一个饲料罐图像并嵌入标签。
  2. 将进度条放置在饲料罐*以显示水位。

现在在这种情况下,进度条将在前景和背景中的标签。

问候,

你只需要创建你的widget,表明其母公司的QWidget,然后显示它。

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

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

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

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

+0

这就是它,确实:) – mlvljr 2013-05-25 20:35:00

除了通过帕特里斯Bernassola弗兰克奥斯特费尔德堆叠顺序可能会感兴趣的答案。它对应于您通过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_() 

我这样做是通过创建基于QWidget的类放在构造

前自己的立场: QPointer一个新= QWidget的(0,POSX,POSY,宽度,高度)在此Qwidgetclass的构造

添加这些integrers POSX,POSY,宽度,高度,然后执行 this.move(POSX,POSY); this.resize(width,height);