我的应用程序使用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();
}