如何将多个滑块设置为相同的宽度

how to set multiple sliders to be the same width

基本上,我有一个 QVBoxLayout 和多个 QHBoxLayout。在 QHBoxLayout 里面,我有一个标签和一个滑块。我的布局如下所示:

但我希望我的滑块看起来像这样:

注意滑块如何从相同位置开始,但左侧的文本是右对齐的。

您必须使用 QGridLayout 而不是 QVBoxLayout + QHBoxLayout:

#include <QtWidgets>

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

    QSlider *angleSlider = new QSlider(Qt::Horizontal);
    QLabel *angleLabel = new QLabel;
    QObject::connect(angleSlider, &QSlider::valueChanged, [angleLabel](int value){
        angleLabel->setNum(value);
    });
    angleLabel->setNum(angleSlider->value());

    QSlider *rotationSlider = new QSlider(Qt::Horizontal);
    QLabel *rotationLabel = new QLabel;
    QObject::connect(rotationSlider, &QSlider::valueChanged, [rotationLabel](int value){
        rotationLabel->setNum(value);
    });
    rotationLabel->setNum(rotationSlider->value());

    QGridLayout *lay = new QGridLayout(&w);

    lay->addWidget(new QLabel("angle"), 0, 0);
    lay->addWidget(angleSlider, 0, 1);
    lay->addWidget(angleLabel, 0, 2);

    lay->addWidget(new QLabel("rotations"), 1, 0);
    lay->addWidget(rotationSlider, 1, 1);
    lay->addWidget(rotationLabel, 1, 2);

    lay->setRowStretch(lay->rowCount(), 1);

    w.show();
    w.resize(320, 120);
    return a.exec();
}