使用自定义调色板时增加QTabWidget选项卡大小

时间:2019-07-10 23:08:26

标签: css qt

我的应用使用了QTabWidget。我希望选项卡填满选项卡栏的整个长度。 我的应用程序还使用调色板来设置所有小部件,表单等的颜色。

我发现我可以按预期设置标签大小:

ui->tabWidget->setStyleSheet(QString("QTabBar::tab { width: %1px; }").arg(ui->tabWidget->size().width()/ui->tabWidget->count()));

但这会使选项卡小部件及其所有子级忽略我的调色板。

如何使用我的调色板并增加标签大小?

1 个答案:

答案 0 :(得分:0)

我试图重现您描述的行为,但未能做到。我正在使用Qt 5.13.0,也许它是旧版本。起初我还以为,我重现了您的行为,但后来我意识到,我只是不完全理解QPalette中的选项,它们实际上有很多具有不同含义的ColorGroups和ColorRoles。

请尝试以下简单的测试运行器,以与您的Qt版本进行验证。

#include <QApplication>
#include <QTabWidget>
#include <QFrame>
#include <QHBoxLayout>
#include <QPushButton>

int main(int argc, char** args) {
    QApplication app(argc, args);
    auto p=app.palette();
    p.setColor(QPalette::ColorGroup::Active, QPalette::ColorRole::Background, QColor("red"));
    p.setColor(QPalette::ColorGroup::Active, QPalette::ColorRole::Foreground, QColor("blue"));
    p.setColor(QPalette::ColorGroup::Active, QPalette::ColorRole::ButtonText, QColor("magenta"));  
    app.setPalette(p);
    auto w= new QTabWidget;
    auto f=new QFrame;
    f->setLayout(new QHBoxLayout);
    f->layout()->addWidget(new QPushButton("Test"));
    w->addTab(f,"Tab1");
    w->setStyleSheet(QString("QTabBar::tab { width: %1px; height: %1px }").arg(100));
    w->show(); 
    app.exec();
}