【问题标题】:I want to add a label in new widget using the Qt framework我想使用 Qt 框架在新小部件中添加标签
【发布时间】:2021-12-21 07:07:32
【问题描述】:

这是我的代码:

void maquette::on_btn_edit_clicked()
{
    QWidget* wdg = new QWidget;
    wdg->resize(320, 340);
    wdg->setWindowTitle("Modiffier");
    QLabel label1("matricule", wdg);
    label1.setGeometry(100, 100, 100, 100);
    wdg->show();
}

窗口显示,但标签没有显示

【问题讨论】:

  • 您的QLabel 的本地范围在maquette::on_btn_edit_clicked 内,并且将在maquette::on_btn_edit_clicked 完成后立即销毁。

标签: c++ qt


【解决方案1】:
void maquette::on_btn_edit_clicked()
{
 QWidget *wdg = new QWidget;
 wdg->resize(320,340);
 wdg->setWindowTitle("Modiffier");
 QLabel *label1 = new QLabel("matricule",wdg);
 label1->setGeometry(100, 100, 100, 100);
 wdg->show();
}

【讨论】:

    【解决方案2】:

    您可以使用育儿方式添加 QLabel。如前所述。

    QLabel *label1 = new QLabel("matricule",wdg);
    

    QLabel *label1 = new QLabel("matricule");
    label1->setParent(wdg);
    

    这将使小部件在其父级内浮动。

    您还可以将 QLabel 添加到已分配给 QWidget 的布局中。

    QVBoxLayout* layout = new QVBoxLayout();
    wdg->setLayout(layout);
    QLabel *label1 = new QLabel("matricule");
    layout->addWidget(label1);
    

    这会将小部件添加到布局中。 布局将控制子小部件的布局方式。

    【讨论】:

    • 谢谢大家的帮助