Qtでは、レイアウトにウィジェットを追加すると、ウィジェットはデフォルトで中央に配置されます。ウィジェットを上下にセンタリングするのではなく、上から下に「リスト表示」する方法はありますか?QVBoxLayout:ウィジェットを中央の代わりに上に縦に並べる方法
答えて
void QLayout::setAlignment (Qt::Alignment alignment)
を使用して、お好みに合わせてアライメントを設定します。
これはちょうどlayout.setAlignment()
を使用するよりも少し複雑です。私はあなたが最大の高さを設定しているウィジェットを展開している場合、そのウィジェットはあなたが望むようには整列しないことを理解した時点で、今まで私のために働いていませんでした。
は、ここで私はlayout.setAlignment(Qt.AlignTop)
を呼び出していてもないトップはQTextBrowser()
ウィジェットを合わせないコード例です。残念ながら、それはPythonにありますが、C++に変換するのはかなり簡単です(私は何度も何度も行っています)。
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class MyWidget(QWidget):
"""
Create a widget that aligns its contents to the top.
"""
def __init__(self, parent=None):
QWidget.__init__(self, parent)
layout = QVBoxLayout()
label = QLabel('label:')
layout.addWidget(label)
info = QTextBrowser(self)
info.setMinimumHeight(100)
info.setMaximumHeight(200)
layout.addWidget(info)
# Uncomment the next line to get this to align top.
# layout.setAlignment(info, Qt.AlignTop)
# Create a progress bar layout.
button = QPushButton('Button 1')
layout.addWidget(button)
# This will align all the widgets to the top except
# for the QTextBrowser() since it has a maximum size set.
layout.setAlignment(Qt.AlignTop)
self.setLayout(layout)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
widget = MyWidget()
widget.show()
widget.resize(QSize(900, 400))
app.exec_()
次に、拡張テキストウィジェットを機能させるために、layout.setAlignment(info, Qt.AlignTop)
を明示的に呼び出します。
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class MyWidget(QWidget):
"""
Create a widget that aligns its contents to the top.
"""
def __init__(self, parent=None):
QWidget.__init__(self, parent)
layout = QVBoxLayout()
label = QLabel('label:')
layout.addWidget(label)
info = QTextBrowser(self)
info.setMinimumHeight(100)
info.setMaximumHeight(200)
layout.addWidget(info)
# Uncomment the next line to get this to align top.
layout.setAlignment(info, Qt.AlignTop)
# Create a progress bar layout.
button = QPushButton('Button 1')
layout.addWidget(button)
# This will align all the widgets to the top except
# for the QTextBrowser() since it has a maximum size set.
layout.setAlignment(Qt.AlignTop)
self.setLayout(layout)
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
widget = MyWidget()
widget.show()
widget.resize(QSize(900, 400))
app.exec_()
2つのソリューション間の比較の後、それはようです:いくつかのウィジェットalignementため
myLayout.setAlignment(Qt.AlignTop)
は動作しますが:
myLayout.setAlignment(myWidget, Qt.AlignTop)
はあなたがレイアウトに追加するだけで最初のウィジェットのために働きます。結局のところ、ソリューションはあなたのウィジェットのQSizePolicyにも依存しています。
あなたはQVBoxLayout
を持っているし、あなたの固定サイズのウィジェットが上に積み重ねることがしたい場合は、単に垂直ストレッチが終わりを追加する追加することができます
layout.addStretch()
あなたが複数のストレッチャーや他のストレッチのアイテムを持っている場合は、サイズ比を定義する整数ストレッチファクタ引数を指定できます。
addStretchおよびaddSpacerItemも参照してください。
これがあなたの元の質問に答えるかどうかはわかりませんが、私がグーグルでこのページに導かれたときの答えです。他の人にとっても役立つかもしれません。
ポストに500サムを追加する方法はありますか? – Acidic
- 1. セルの中央にビデオを縦に並べる方法は?
- 2. ヒートマップティックラベルを中央の代わりにy軸の上に配置する方法
- 3. ボーダー右の高さを縦中央に合わせる方法
- 4. 図の中にテキストを縦に並べる方法は?
- 5. タグを縦に並べる方法は?
- 6. 3つのhtmlテーブルを並べて中央に並べる方法
- 7. 浮動小数点の取得方法:右ボタンを中央に縦に並べる
- 8. jQuery - 要素をアンカーリンクで上部の代わりに画面の中央にスクロール
- 9. 私のメニューを縦に中央にする方法
- 10. QVBoxLayout内のすべてのウィジェットを循環させる方法
- 11. divを縦横に中央に揃える方法は?
- 12. アンダースコアを縦横に並べる方法はありますか?
- 13. 右下の代わりに左上にPHPで透かしを並べる
- 14. キャンバス上にテキストを縦に中央に置く
- 15. イメージの上に縦と中央のテキストを配置する
- 16. 浮遊画像内の代替テキストを縦に並べる方法は?
- 17. divを縦に並べる
- 18. 親ウィジェットの代わりに子ウィジェットに線を引く方法は?
- 19. 画像の横にテキストを縦に並べる方法は?
- 20. layout_alignBottomは、下端の代わりに中央を揃えます。
- 21. 画像を中央と中央の両方に縦横に配置する方法
- 22. 縦の中央にあるブートストラップ3ボタン
- 23. 要素を親の真ん中で縦に並べる方法は?
- 24. 私のブートストラップボタンをウェブページの中央に縦に並べるにはどうしたらいいですか?
- 25. PySide/PyQtでスクリーンの中央にウィジェットを作る方法は?
- 26. ボックスを横に並べ、次に縦に並べる
- 27. Xamarin iOS Fluent Layoutで中央のサブビューを並べる方法は?
- 28. ブートストラップドロップダウンテキストの縦中央
- 29. HTML - 縦に中央で整列する
- 30. テキストが縦に中央になるようにイメージリストマーカーを配置する方法
これも私の問題を解決しました。私は本当になぜ* 1つの最小幅/高さを設定する必要があるか分からない。おそらくそれについて解説してもらえますか? – Seth