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



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

我发现我可以按预期设置选项卡大小,如下所示:

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

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

如何使用调色板并增加选项卡大小?

我试图重现您描述的行为,但我无法这样做。我正在使用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();
}

最新更新