【问题标题】:Why does my corner-widget not show up in QTabWidget?为什么我的角落小部件没有出现在 QTabWidget 中?
【发布时间】:2021-03-18 15:53:26
【问题描述】:

我有一个 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);

【问题讨论】:

    标签: c++ qt qt5 qwidget qtabwidget


    【解决方案1】:

    原因

    角落小部件的位置受到限制。您使用垂直布局,其内容边距将按钮向下移动,看不见。

    解决方案

    使用水平布局并将内容边距设置为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);
    

    结果

    给定的示例产生以下结果:

    【讨论】:

      猜你喜欢
      • 2013-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多