如何让QWidget在QTabWidget中扩展到整个选项卡?

4
我在布局和大小策略方面一直不太擅长,所以这可能是一个简单的答案,但我还是来尝试解决一下。
当我向QTabWidget添加新选项卡并将小部件设置为QSplitter时,拆分器将使用给定的所有空间。然而,当我将QSplitter放入QWidget中,并使用该QWidget添加选项卡时,它不会使用给定的空间 - 只使用拆分器大小的空间。
我希望避免使用QLayout,因为我已经在拆分器中包含了所有必要的小部件。我只需要让我的QWidget在选项卡中使用所有空间(这应该允许QSplitter在QWIdget中使用所有空间)。
我在下面构建了一个示例,展示了比较和结果。长话短说 - 如何使场景一(在“选项卡一”中)看起来像场景二(“选项卡二”),同时仍然在父QWidget中使用Spliiter?
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

1个回答

5

将其改为:

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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接