如何在QGridLayout中正确对齐QLabel?

时间:2017-06-24 10:07:30

标签: c++ qt

我试图在一个简单的GridLayout中对齐QLabel但是这不起作用似乎是QT 5.9中的一个错误?

这是我的片段,一切都在QDialog中:

MyDialogue::MyDialogue(QWidget *parent) : QDialog(parent) {
    QLabel *labelA = new QLabel(); labelA->setFixedSize(100, 25);
    QLabel *labelB = new QLabel(); labelB->setFixedSize(100, 25);
    QLabel *labelC = new QLabel(); labelC->setFixedSize(100, 25);
    QLabel *labelD = new QLabel(); labelD->setFixedSize(100, 25);

    labelA->setStyleSheet("background-color:blue");
    labelB->setStyleSheet("background-color:yellow");
    labelC->setStyleSheet("background-color:purple");
    labelD->setStyleSheet("background-color:green");

    QGridLayout *layout = new QGridLayout(this);    
    layout->addWidget(labelA, 1, 1); 
    layout->addWidget(labelB, 1, 2);
    layout->addWidget(labelC, 2, 1, 2, 2);
    layout->addWidget(labelD, 3, 1, 3, 2);
}

结果:

enter image description here

1 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案(我的错误):

MyDialogue::MyDialogue(QWidget *parent) : QDialog(parent) {
    QLabel *labelA = new QLabel();
    QLabel *labelB = new QLabel();
    QLabel *labelC = new QLabel();
    QLabel *labelD = new QLabel();

    labelA->setStyleSheet("background-color:blue");
    labelB->setStyleSheet("background-color:yellow");
    labelC->setStyleSheet("background-color:purple");
    labelD->setStyleSheet("background-color:green");

    QGridLayout *layout = new QGridLayout(this);    
    layout->addWidget(labelA, 1, 1); 
    layout->addWidget(labelB, 1, 2);
    layout->addWidget(labelC, 2, 1, 1, 2);
    layout->addWidget(labelD, 3, 1, 1, 2);
}

enter image description here