Как нарисовать контроль с QStyle и с указанным QSS?

Я пытаюсь нарисовать флажок вQStyledItemDelegate, Я хочу, чтобы флажок отображался не с собственным видом, а со стилем, который указанqApp->setStyleSheet(), Я не знаю почему, но когда я рисую контроль сQStyle::drawPrimitive - это не поднимает глобальный QSS.

Есть какие-то решения, как вручную нарисовать флажок со стилем приложения?

Следующий код и скриншот демонстрируют мою проблему:

Первый флажок - ничья сQStyle::drawPrimitiveВторой флажок виджет.

#include <QApplication>
#include <QWidget>
#include <QStyle>
#include <QPainter>
#include <QStyleOptionButton>
#include <QCheckBox>

class TestWindow
    : public QWidget
{
    Q_OBJECT

public:
    TestWindow() {}
    ~TestWindow() {}

    void paintEvent( QPaintEvent * event )
    {
        QPainter p( this );

        QStyleOptionButton opt;
        opt.state |= QStyle::State_On;
        opt.state |= QStyle::State_Enabled;
        opt.rect = QRect( 10, 10, 20, 20 );

        style()->drawPrimitive( QStyle::PE_IndicatorCheckBox, &opt, &p, this );
    }
};

int main( int argc, char *argv[] )
{
    QApplication a( argc, argv );

    a.setStyleSheet( "QCheckBox::indicator{ border: 1px solid red; }" );

    TestWindow w;
    QCheckBox *cb = new QCheckBox( &w );
    cb->move( 10, 30 );

    w.show();

    return a.exec();
}

#include "main.moc"

Примечание: можно создать невидимый флажок и использоватьQPixmap::grabWidget, но этот метод слишком тяжелый.

Ответы на вопрос(2)

Ваш ответ на вопрос