0

現在、カスタム QWidget クラスを QVBoxLayout に追加しようとしています。私が得ている問題は、ウィジェットがレイアウトにまったく表示されないことです。デフォルトのサイズがゼロに設定されているためにウィジェットが表示されていないと思ったので、QWidgetの最小サイズを設定しようとしました。

これは、クラスがどのように見えるかを簡略化したものです。

class myWidget(QWidget):

    def __init__(self):
        super().__init__()

        # Slider
        self.mySlider = QSlider(Qt.Horizontal)
        self.mySlider.setRange(-360, 360)

        # LCD Screen
        self.lcd = QLCDNumber()
        self.lcd.setMinimumHeight(45)
        self.lcd.setMaximumHeight(75)

        # set Size
        self.setMinimumSize(QSize(400,300))

ここでは機能について心配していないので、スライダーと LCD 画面の間に作成された信号とスロットを削除しました。次のコードの 2 つのボタンの間に QSize(400,300) の灰色の領域が直接表示されるという事実のみ:

class MainWindow(QMainWindow):

    def __init__(self):
        super().__init__()

        #Create Widgets to be Added to Central Widget
        self.w1 = QPushButton("First")
        self.w2 = myWidget()
        self.w3 = QPushButton("Third")

        #Set Central Widget and VBox
        self.central_widget = QWidget()
        self.setCentralWidget(self.central_widget)
        self.layout = QVBoxLayout()
        self.central_widget.setLayout(self.layout)

        #Add widgets
        self.layout.addWidget(self.w1)
        self.layout.addWidget(self.w2)
        self.layout.addWidget(self.w3)

つまり、私が単純に行っているのは、3 つのウィジェットを作成し、それらを中央のウィジェット内の QVBoxLayout に配置することです。2 つのボタン ウィジェットw1w3が表示されますが、カスタム ウィジェットは表示されず、ウィジェットのサイズを大きくすると、 と の間にsetMinimumSizeグレーのスペースが追加されるだけです。w1w3

したがって、ウィジェットはそこにありますが、何らかの理由で表示されません。私はPyQtにかなり慣れていないので、なぜこれが起こったのか説明してください.

4

1 に答える 1