【问题标题】:QWidget setGeometry show without use of a QLayoutQWidget setGeometry 显示不使用 QLayout
【发布时间】:2014-07-29 18:20:58
【问题描述】:

目标是在另一个 QWidget 中绘制一个 QWidget 子类。只给出坐标。

#include <QApplication>
#include <QWidget>
#include <QLabel>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget* w = new QWidget;
    w->show();
    QLabel* l = new QLabel;
    l->setText("Hello World!");
    l->setParent(w);
    l->setGeometry(0,0,100,100);

    return a.exec();
}

为什么我在窗户上什么都看不到。

【问题讨论】:

    标签: qt user-interface qwidget


    【解决方案1】:

    您必须调用QWidget::show 来显示标签,因为您添加它父窗口小部件已经显示。

    QLabel* l = new QLabel;
    l->setText("Hello World!");
    l->setParent(w);
    l->setGeometry(0,0,100,100);
    l->show();
    

    另一种解决方案是在所有子窗口小部件都已添加后显示父窗口。你不需要在堆中明确分配任何东西:

    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        QWidget w;
        QLabel l("Hello World!", &w);
        l.setGeometry(0,0,100,100);
        w.show();
        return a.exec();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 2019-10-31
      • 1970-01-01
      相关资源
      最近更新 更多