Просто добавьте макет и поместите в него ваши новорожденные ярлыки.
QHBoxLayout *layout = new QHBoxLayout; // or some another QLayout descendant
layout->addWidget(newWidget);
widget->setLayout(layout);
единственное место, которое мне пришлось изменить, это добавить макет в виджет, а затем
void EditThingsWindow::addButtonClicked()
{
QLabel * label=new QLabel(this);
layout->addWidget(label);
label->move(200,160);
label->setText(";;;;;;;;;;;;;;");
}
получил дело.
Если вы ДОЛЖНЫ (вы не делаете!) Возиться с абсолютным позиционированием, вы должны сделать весь этот стандартный код самостоятельно. Заголовки и включенные опущены.
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
EditThingsWindow w(0);
w.show();
return a.exec();
}
EditThingsWindow::EditThingsWindow(QWidget *parent):QWidget(parent)
{
i = 0;
setGeometry(2, 2, 400, 400);
add=new QPushButton(this);
add->setGeometry(2, 2, 100, 20);
add->setText("Add");
add->move(20,10);
QObject::connect(add,SIGNAL(clicked()),this,SLOT(addButtonClicked()));
}
void EditThingsWindow::addButtonClicked()
{
QLabel * label=new QLabel(this);
label->setGeometry(10, 30 + i* 30, 50, 20);
i++;
label->setText(";;;;;;;;;;;;;;");
label->show();
}