对齐QCheckbox文本和其下方的QLabel

时间:2018-11-19 15:31:48

标签: c++ qt qt5 qlabel qcheckbox

我有一个带有一些文本的复选框,并且该复选框下方有一个标签。如何对齐此标签,使其与复选框上的文本对齐。

我想要什么:

[ ] insert_text
    some_text 

我所拥有的:

[ ] insert_text
some_text

1 个答案:

答案 0 :(得分:4)

一个可能的解决方案是在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();
}
相关问题