我正在使用QT开发丰富的UI应用程序。
简单的例子是,我必须在进料罐内显示一个带有水位的锅炉。
现在,在这种情况下,进度条将位于前景中,标签位于背景中。
此致
答案 0 :(得分:33)
使用QWidget :: move()设置位置,QWidget :: resize()设置大小并重新实现父级的resizeEvent()处理程序,如果你需要在父级调整大小时重新定位小部件。
答案 1 :(得分:25)
您只需创建窗口小部件,指示其父QWidget然后显示它。
不要将其添加到父版面,否则您将无法根据需要移动它。
不要忘记指出其父级别,它将显示为独立小部件。
在这些情况下,您的窗口小部件将被视为QWidget的子窗口,但不会被视为父窗口布局的成员。所以它将是一个“浮动”的孩子,你必须在调整父级的QWidget时管理它的行为。
答案 2 :(得分:3)
除了 Patrice Bernassola 和 Frank Osterfeld 的答案之外,堆叠顺序可能会引起关注。它对应于您findChildren
所获得的子项顺序以及操作顺序的方法是使用raise_
(带尾随下划线),lower
或stackUnder
。
使用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_()
答案 3 :(得分:0)
我是通过创建一个基于Qwidget的类在构造函数中放置它的位置
来实现的例如: QPointer a =新的QWidget(0,posx,posy,width,height)
在这个Qwidgetclass的构造函数中添加这些integrers posx,posy,width,height然后再做 this.move(POSX,POSY); this.resize(宽度,高度);