首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >只有QDockWidgets而没有中心小部件的QMainWindow

只有QDockWidgets而没有中心小部件的QMainWindow
EN

Stack Overflow用户
提问于 2010-08-20 21:01:59
回答 4查看 12K关注 0票数 20

我们在QDockWidgets中有一个包含多个组件的窗口。理想情况下,我们希望所有组件都是可停靠的,但有一个组件可能始终可见。因此,我们将其作为中心小部件。

但是,这不允许我们创建包含此中央小部件的可停靠小部件的选项卡式堆栈(例如,您可以通过调用tabifyDockWidget来创建)。所以,我们试着创建一个没有中央部件的UI,但是有几个QDockWidget

我在QDockWidgetQMainWindow的手册中找不到任何迹象表明这是不允许的情况。我们在Qt Designer中创建了尽可能多的内容,而且它似乎要求您有一个中央小部件--因为它在手动编辑XML后崩溃。

问题是:只有QDockWidget而没有中央小部件的QMainWindow合法吗?Qt Designer只是因为一个bug而崩溃,还是它告诉我这是一个坏主意,我需要停止这样做?

EN

回答 4

Stack Overflow用户

发布于 2012-10-22 00:08:41

如果我在"ui->setupUi( this )“生成的代码行之后输入下面的内容,那么它对我来说是有效的。

代码语言:javascript
运行
复制
MainWindow::setCentralWidget(NULL);

如果是"legal",我不知道,但我知道它对我很有效。

(我知道这是一个老问题,但仍然有效:)

票数 10
EN

Stack Overflow用户

发布于 2011-10-20 15:45:57

废话!我有一个功能齐全的QMainWindow,只有QDockWidgets,没有中央部件。我不知道它有多“合法”,但如果你在QtDesigner之外创建它,这是非常容易的。

示例

代码语言:javascript
运行
复制
from PyQt4 import QtCore, QtGui

class Window(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        self.setWindowTitle('Dock Widgets')
        self.setTabPosition( QtCore.Qt.TopDockWidgetArea , QtGui.QTabWidget.North )
        self.setDockOptions( QtGui.QMainWindow.ForceTabbedDocks )

        self.dockList = []
        for dockName in 'First Second Third Fourth'.split():
            dock = QtGui.QDockWidget(dockName)
            dock.setWidget(QtGui.QListWidget())
            dock.setAllowedAreas(QtCore.Qt.TopDockWidgetArea)
            self.addDockWidget(QtCore.Qt.TopDockWidgetArea, dock)

            self.dockList.append( dock )


        if len(self.dockList) > 1:
            for index in range(0, len(self.dockList) - 1):
                self.tabifyDockWidget(self.dockList[index],self.dockList[index + 1])



if __name__ == '__main__':

    import sys
    app = QtGui.QApplication(sys.argv)
    window = Window()
    window.show()
    app.exec_()
票数 3
EN

Stack Overflow用户

发布于 2016-03-11 22:06:36

我在pyside (python的QT)中遇到过这个问题。我只需要一个docks,所以我必须创建一个假的小部件(即标签)放在中心位置。然而,一旦我隐藏了它,码头就不能再自由地调整大小了。如果我将None/null作为中心小部件,也会发生同样的情况。

在互联网上进行了大量无效的搜索后,我发现问题出在对接位置的初始设置(上/下/左/右)。如果我把它们都放在相同的位置(即顶部),让用户来组织它,问题就不会出现。然后我试着只使用顶部和底部的位置(因为我可以按照我想要的方式组织码头,而不使用横向位置(两个在顶部,一个在底部)。令我惊讶的是,有了这样的安排,问题终于解决了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3531031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档