问题
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.
回答1:
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();
}
来源:https://stackoverflow.com/questions/24116402/qwidget-setgeometry-show-without-use-of-a-qlayout