gpt4 book ai didi

qt - 如何让 QWidget 扩展到 QTabWidget 中的整个选项卡?

转载 作者:行者123 更新时间:2023-12-01 19:05:36 39 4
gpt4 key购买 nike

在布局和尺寸策略方面,我从来都不是太出色,所以这可能是一个简单的答案,但就是这样。

当我向 QTabWIdget 添加新选项卡并将小部件设置为 QSplitter 时,拆分器将使用给定的全部空间量。但是,当我将 QSplitter 放入 QWidget 中,并使用 QWidget 添加选项卡时,它不会使用给定的空间 - 仅使用分割器的大小。

我想远离 QLayout,因为我在分割器中拥有所有必要的小部件。我需要的是让我的 QWidget 使用选项卡中的所有空间(这应该允许 QSplitter 使用 QWIdget 中的所有空间)。

我在下面构建了一个示例来显示比较以及结果。长问题简短 - 我怎样才能让场景一(在“选项卡一”内)看起来像场景二(“选项卡二”),并且仍然使用父级 QWidget 作为分割器?

ui->setupUi(this);
QTabWidget* pTab = new QTabWidget(this);
this->setCentralWidget(pTab);

//Splitter belongs to a QWidget, which belongs to the Tab. Does not use all space
QWidget* pWidget = new QWidget(this);
QSplitter* pSplitter = new QSplitter(pWidget);

QListWidget* pList = new QListWidget(this);
QListWidget* pList2 = new QListWidget(this);
pSplitter->addWidget(pList);
pSplitter->addWidget(pList2);
pTab->addTab(pWidget, "Tab One");

//Splitter belongs to the Tab. Uses all space
QListWidget* pList3 = new QListWidget(this);
QListWidget* pList4 = new QListWidget(this);

QSplitter* pSplitter2 = new QSplitter(this);
pSplitter2->addWidget(pList3);
pSplitter2->addWidget(pList4);
pTab->addTab(pSplitter2, "Tab Two");

End result

最佳答案

更改此:

QWidget* pWidget = new QWidget(this);
QSplitter* pSplitter = new QSplitter(pWidget);

对此:

QWidget* pWidget = new QWidget(this);
QVBoxLayout* layout = new QVBoxLayout(pWidget);
QSplitter* pSplitter = new QSplitter(pWidget);
layout->addWidget(pSplitter);

关于qt - 如何让 QWidget 扩展到 QTabWidget 中的整个选项卡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11911323/

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