現在、カスタム 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 つのボタン ウィジェットw1
とw3
が表示されますが、カスタム ウィジェットは表示されず、ウィジェットのサイズを大きくすると、 と の間にsetMinimumSize
グレーのスペースが追加されるだけです。w1
w3
したがって、ウィジェットはそこにありますが、何らかの理由で表示されません。私はPyQtにかなり慣れていないので、なぜこれが起こったのか説明してください.