Выровняйте текст QCheckbox и QLabel под ним - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть флажок с некоторым текстом, и у меня есть ярлык под этим флажком.Как я могу выровнять этот ярлык, чтобы он соответствовал тексту на флажке.

Что я хочу:

[ ] insert_text
    some_text 

Что я имею:

[ ] insert_text
some_text

1 Ответ

0 голосов
/ 19 ноября 2018

Возможным решением является добавление отступа к левой стороне QLabel подходящей ширины, чтобы вычислить ширину. Я создал собственный QCheckBox, который возвращает ширину индикатора, но к этой сумме вы должны добавить пару пиксели, которые представляют пространство между индикатором и текстом:

#include <QtWidgets>

class CheckBox: public QCheckBox{
public:
    using QCheckBox::QCheckBox;
    int width_of_indicator(){
        QStyleOptionButton opt;
        initStyleOption(&opt);
        return  style()->subElementRect(QStyle::SE_CheckBoxIndicator, &opt,this).width();
    }
};

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget w;
    auto ch = new CheckBox("insert_text");
    auto label = new QLabel("some_text: Stack Overflow");
    label->setStyleSheet(QString("padding-left: %1px").arg(ch->width_of_indicator()+2));
    auto lay = new QVBoxLayout(&w);
    lay->addWidget(ch);
    lay->addWidget(label);
    w.show();
    return a.exec();
}
...