Увеличьте размер вкладки QTabWidget при использовании пользовательской палитры - PullRequest
1 голос
/ 11 июля 2019

Мое приложение использует QTabWidget.Я хочу, чтобы вкладки заполняли всю длину панели вкладок.Мое приложение также использует палитру для установки цветов всех виджетов, форм и т. Д.

Я обнаружил, что могу установить размер вкладки, как и предполагалось:

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

Но это вызываетвиджет вкладки и все его дочерние элементы игнорируют мою палитру.

Как использовать палитру, а также увеличить размер вкладки?

1 Ответ

0 голосов
/ 11 июля 2019

Я пытался воспроизвести ваше описанное поведение, но не смог этого сделать.Я использую 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...