QWidget setGeometry show without use of a QLayout

荒凉一梦 提交于 2020-01-16 01:14:13

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!