gpt4 book ai didi

python - 如何使布局成为 QMainWindow 的主要小部件

转载 作者:行者123 更新时间:2023-12-01 02:21:39 25 4
gpt4 key购买 nike

假设我有两个水平布局的按钮,我需要将其添加到 QMainWindow (基本上,一个应用程序在主区域有一个菜单栏和两个按钮)。

我尝试过这样实现

class Example(QMainWindow):
def __init__(self):
super().__init__()

# Menus
exitAct = QAction(QIcon('exit.png'), '&Exit', self)
exitAct.setShortcut('Ctrl+Q')
exitAct.setStatusTip('Exit application')
exitAct.triggered.connect(qApp.quit)

self.statusBar()

menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAct)

# central widget
firstButton = QPushButton("first")
secondButton = QPushButton("second")

hbox = QHBoxLayout()
hbox.addWidget(firstButton)
hbox.addWidget(secondButton)

# Not working because TypeError: setCentralWidget(self, QWidget): argument 1 has unexpected type 'QHBoxLayout'
# self.setCentralWidget(hbox)

# Not working because centralWidget is not set, therefore is null
# self.centralWidget().setLayout(hbox)

# Not working because this is a QMainWindow, and the top-level widget already has a layout containing the menu bar for instance
self.setLayout(hbox)

self.setGeometry(300, 300, 300, 190)
self.setWindowTitle('Points')
self.show()

我已经定义了两个按钮,创建了水平布局并将按钮添加到布局中。现在我需要告诉我的窗口使用此布局。

但是,我无法将布局添加到 QMainWindow ,因为QMainWindow已经有一个顶级布局(用于菜单栏等)。

结果,我的按钮没有显示。我怎样才能实现这个目标?

最佳答案

您可以创建一个QWidget,对其应用布局,并将其设置为中央小部件:

centralWidget = QWidget()
centralWidget.setLayout(hbox)
self.setCentralWidget(centralWidget)

关于python - 如何使布局成为 QMainWindow 的主要小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47901618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com