c++ - 为什么我的角落小部件没有显示在 QTabWidget 中?

标签 c++ qt qt5 qwidget qtabwidget

我有一个 QTabWidget,我想要 两个右上角的按钮。
我使用此代码将垂直布局添加为角小部件并为其添加两个按钮:

QWidget* cornerWidget = new QWidget();
QVBoxLayout* vbox = new QVBoxLayout();
QPushButton* button1 = new QPushButton("Button 1");
QPushButton* button2 = new QPushButton("Button 2");

vbox->addWidget(button1);
vbox->addWidget(button2);

ui->myTabWidget->setCornerWidget(cornerWidget);
cornerWidget->setLayout(vbox);
cornerWidget->show();
但是,当我运行我的程序时,右上角根本没有显示任何小部件。
如果我使用这个简化的代码只添加一个按钮,它可以完美运行并显示我的按钮:
QPushButton* button1 = new QPushButton("Button 1")
ui->myTabWidget->setCornerWidget(button1);

最佳答案

原因
角落小部件的位置受到限制。您使用垂直布局,其内容边距将按钮向下移动,使其看不见。
解决方案
使用水平布局并将内容边距设置为 0 .
例子
这是我为您编写的示例,用于演示如何实现建议的解决方案:

auto *cornerWidget = new QWidget(this);
auto *hbox = new QHBoxLayout(cornerWidget);
auto *button1 = new QPushButton(tr("Button 1"), this);
auto *button2 = new QPushButton(tr("Button 2"), this);

hbox->addWidget(button1);
hbox->addWidget(button2);
hbox->setContentsMargins(0, 0, 0, 0);

ui->myTabWidget->setCornerWidget(cornerWidget);
结果
给定的示例产生以下结果:
Application window

关于c++ - 为什么我的角落小部件没有显示在 QTabWidget 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65180078/

相关文章:

c++ - 调整大小而不是滚动的 QListWidget

c++ - Qt 应用程序找不到第 3 方 DLL 并崩溃

c++ - 修改控件时回调的速率限制

c++ - QObject 派生类有哪些要求?

c++ - 如何在 QML 中显示来自 QTextDocument 的分页文本?

c++ - 级联 Poco 异常

c++ - C++ 中的大图表示

C++ 将模板参数存储为变量

c++ - 如何从 QML 设置模型数据?

c# - C++ DLL 的函数不会在 WPF 中输出文本