2

The target is to paint a QWidget subclass in a other QWidget. By give only the coords.

#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();
}

Why i see nothing on the window.

user3721645
  • 23
  • 1
  • 3

1 Answers1

4

You must call QWidget::show to show the label since you add it after the parent widget has already been shown.

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

An alternative solution is to show the parent after all the child widgets are already added. You don't need to allocate anything explicitly the heap:

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();
}
Kuba hasn't forgotten Monica
  • 95,931
  • 16
  • 151
  • 313
thuga
  • 12,601
  • 42
  • 52