QMainWindow中央小部件中的QTabWidget拉伸过大,覆盖了菜单b

2024-04-16 05:13:55 发布

您现在位置:Python中文网/ 问答频道 /正文

就是这样,一个QtabWidget被放到QMainWindow的中心小部件中,它伸展得太大,覆盖了菜单栏。至少我没有看到任何错误的布局,它是相当直接的,但它不适合我。我知道导入很糟糕:)我正在使用最新的PyQt5 for Windows。有什么想法吗?在

from PyQt5.Qt import *


class MainWindow(QMainWindow):

def __init__(self, parent=None):
    super(MainWindow, self).__init__(parent)
    self.setBaseSize(800, 600)
    self.controllerMonitors = []
    self.setWindowTitle("Window")
    sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
    sizePolicy.setHorizontalStretch(0)
    sizePolicy.setVerticalStretch(0)
    sizePolicy.setHeightForWidth(self.sizePolicy().hasHeightForWidth())
    self.setSizePolicy(sizePolicy)
    self.setMinimumSize(QSize(800, 450))

    #--------
    # Menu
    #--------
    self.menuBar = QMenuBar(self)
    self.menuBar.setGeometry(QRect(0, 0, 800, 26))

    self.menu = QMenu(self.menuBar)
    self.menu.setTitle("Файл")

    self.actionSettings = QAction(self)
    self.actionSettings.setText("Настройки")
    self.actionExit = QAction(self)
    self.actionExit.setText("Изход")

    self.menu.addAction(self.actionSettings)
    self.menu.addAction(self.actionExit)

    self.menuBar.addAction(self.menu.menuAction())
    self.menu.addAction(self.actionSettings)
    self.menu.addAction(self.actionExit)

    self.actionExit.triggered.connect(self.close)

    #---------
    # Toolbar
    #---------
    # self.mainToolBar = QToolBar(self)
    # self.mainToolBar.setObjectName("mainToolBar")
    # self.addToolBar(Qt.TopToolBarArea, self.mainToolBar)

    #----------------
    # Central widget
    #----------------
    centralWidget = QWidget(self)
    centralWidgetLayout = QVBoxLayout(centralWidget)
    centralWidget.setLayout(centralWidgetLayout)

    # sizePolicy1 = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
    # sizePolicy1.setHorizontalStretch(0)
    # sizePolicy1.setVerticalStretch(0)
    # sizePolicy1.setHeightForWidth(centralWidget.sizePolicy().hasHeightForWidth())
    # centralWidget.setSizePolicy(sizePolicy1)
    centralWidget.setContextMenuPolicy(Qt.NoContextMenu)

    tabContainer = QTabWidget(centralWidget)

    tab1 = QWidget(tabContainer)
    te = QTextEdit(tab1)
    tab1layout = QVBoxLayout(tab1)
    tab1.setLayout(tab1layout)
    tab1layout.addWidget(te)

    tabContainer.addTab(tab1, "Tab 1")
    tabContainer.setCurrentIndex(0)
    centralWidgetLayout.addWidget(tabContainer)

    self.setCentralWidget(centralWidget)

以及主.py在

^{pr2}$

Tags: selfqttab1menuaddactioncentralwidgetmenubarqsizepolicy
1条回答
网友
1楼 · 发布于 2024-04-16 05:13:55

问题不在于选项卡小部件:而是菜单栏。在

QMainWindow class已经有一个用于创建男士酒吧的built-in method,因此您不需要自己创建一个。(示例中的菜单栏之所以被选项卡小部件覆盖,是因为您没有将其添加到布局中)。在

示例中菜单的设置代码可以简化为:

    #    
    # Menu
    #    

    self.menu = self.menuBar().addMenu("Файл")
    self.actionSettings = self.menu.addAction("Настройки")
    self.actionExit = self.menu.addAction("Изход")
    self.actionExit.triggered.connect(self.close)

    #    -

相关问题 更多 >