QTを使用してリッチUIアプリケーションを開発しています。
簡単な例としては、給水タンク内の水位をボイラーに表示する必要があります。
この場合、進行状況バーは前景に、ラベルは背景に表示されます。
よろしく、
ウィジェットを作成し、その親QWidgetを指定して、表示するだけです。
親レイアウトに追加しないでください。追加すると、希望どおりに移動できなくなります。
親を示すことを忘れないでください。それ以外の場合は、独立したウィジェットとして表示されます。
これらの条件では、ウィジェットはQWidgetの子と見なされますが、親のレイアウトのメンバーとは見なされません。したがって、これは「フローティング」子になるため、親のQWidgetのサイズを変更するときの動作を管理する必要があります。
QWidget :: move()を使用して位置を設定し、QWidget :: resize()を使用してサイズを設定し、親のサイズが変更されたときにウィジェットを再配置する必要がある場合は、親のresizeEvent()ハンドラーを再実装します。
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_()
Qwidgetに基づいてクラスを作成し、コンストラクターにその位置を配置することでそれを行います
例:QPointer a =新しいQWidget(0、posx、posy、幅、高さ)
このQwidgetクラスのコンストラクターで、これらのインテグレーターposx、posy、width、heightを追加して、this.move(posx、posy);を実行します。 this.resize(width、height);