1

これが私の最初の質問です。できるだけ明確にしたいと思います。

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()

ありがとう!

4

1 に答える 1

1

QWebViewを試しましたか? これは、静的 HTML の表示にも使用できる Webkit ベースのブラウザー ウィジェットです。これは、CSS と HTML のほとんどをサポートするはずです。

于 2013-03-16T23:17:35.313 に答える