QCheckBox

Первое , что вводит в заблуждение это то, что есть icon у QСheckBox и есть графический квадратный значок (indicator) и это совсем разные вещи.

Есть еще text как и любой нормальной кнопки, так как QСheckBox тоже наследуется от QAbstractButton.

"QCheckBox::indicator{\n"\
"   height: 60px; \n"\
"   width: 60px; \n"\
"}\n"\

"QCheckBox::indicator:!checked{\n"\
"   image:url(:/eqpt/check-off.svg);\n"\
"}\n"\

"QCheckBox::indicator:checked{\n"\
"   image:url(:/eqpt/check-on.svg);\n"\
"}\n"\

setStyleSheet меняет изображение индикатора на svg картинку (как в примере выше), но НЕ меняет размер индикатора. И чтобы вы ни делали никак на размер индикатора  не повлиять (штатно).

фотка 1

Что мы можем сделать - это унаследоваться от QCheckBox и переопределить отрисовку объекта.

void Record_QCheckBox::paintEvent(QPaintEvent *e)
{
    QStylePainter p(this);
    QStyleOptionButton opt;
    initStyleOption(&opt);
    //p.drawControl(QStyle::CE_CheckBox, opt);
    p.drawControl(QStyle::CE_CheckBoxLabel, opt);
}

Мы подменяем CE_CheckBox на CE_CheckBoxLabel и более индикатор не отрисовывается (остается только icon и text):

фотка 2

Текст можно убрать и вуаля останется icon, размером которого можно управлять через setIconSize например.

И, что примечательно теперь начинает работать и установка размера индикатора через стили , хотя это уже вроде бы и не индикатор:

"QCheckBox::indicator{\n"\
"   height: 60px; \n"\
"   width: 60px; \n"\
"}\n"\

Чтобы подменять svg картинку в унаследованном от QCheckBox классе переопределяем виртуальный метод checkStateSet:

void Record_QCheckBox::checkStateSet()
{
    QCheckBox::checkStateSet();
    
    if( isChecked() )
        setIcon(QIcon(":eqpt/check-on.svg"));
    else
        setIcon(QIcon(":eqpt/check-off.svg"));
}

И теперь все масштабируется нормально (не что было):

фотка 3

Примечание: Qt 4.8.1. Какой смысл переходить на Qt 5/6 в 2023г. , в Qt 4 все вопросы решаются прекрасно.