これが私の最初の質問です。できるだけ明確にしたいと思います。
2つの内部要素を持つウィジェットがあります。WidgetAは右上にあり、WidgetBは最初の要素をラップする必要があります(したがって、その中のテキストはWidgetAの下に配置されます)。
これは私が達成しようとしていることです:
________________________
| _________ _____ |
| | B | | A | |
| | some | |___| |
| | text |--------- |
| | should go here | |
| |_________________| |
|______________________|
- 一日中検索しましたが、自分のケースに一致するものが見つかりませんでした。
- FlowLayoutを作成しようとしましたが、それでも希望どおりに機能しません。
- HTMLとCSSをQLabelに入れて設計しようとしましたが、PyQtではfloatがサポートされていないことがわかりました(残念ですが、Nokia !!)
- カスタムQGraphicsView+QGraphicsItemの作成を開始しましたが、それは私にとって少し難しいので、もっと簡単な解決策があることを願っています。
どのレイアウトを使用することをお勧めしますか?独自のカスタムレイアウトを作成する必要がありますか?
私の特定のケースでは、WidgetAはQLabel(QPixmapを使用)であり、WidgetBはQFormLayoutです(これはWidgetではありませんが、この方法の方が他の人にとってより役立つと思います)。
コード例を作成しましたが、これは設計上の問題であり、コードはそれほど重要ではないかもしれません。
from PyQt4 import QtGui, QtCore
class MyWidget(QtGui.QWidget):
def __init__(self, parent=None):
super(MyWidget, self).__init__(parent)
self.layout = QtGui.QVBoxLayout()
self.hLayout = QtGui.QHBoxLayout()
self.smallLabel = QtGui.QLabel("small small")
self.longLabel = QtGui.QLabel('''
very very very very very very very
very very very very very very very
very very very very very very very
long label''')
self.longLabel.setWordWrap(True)
self.hLayout.addWidget(self.longLabel)
self.hLayout.addWidget(self.smallLabel)
self.layout.addLayout(self.hLayout)
self.setLayout(self.layout)
# I run this in Maya, so I don't care about __main__ and apps
w = MyWidget()
w.show()
ありがとう!