Шоу () было проблемой! И спасибо за дополнительные объяснения, поможет мне иметь более чистый код.
я есть следующая иерархия в моем приложении Qt: QMainWindow> QWidget (centralWidget)> QWidget (в подклассе)> QLabel
Код инициализации в моем коде QMainWindow:
centralWidget = new QWidget();
centralWidget->setGeometry(0,0,width,height);
chatWidget=new ChatWidget(this); // the subclassed QWidget
setCentralWidget(centralWidget);
В моей подклассовой инициализации QWidget (которая происходит одновременно с инициализацией Qt App) у меня есть следующий код:
ChatWidget::ChatWidget(QWidget *parent):QWidget(parent)
{
QLabel *lbl;
lbl=new QLabel(this);
lbl->setText("Hello World 1"); <-- Is properly Display
}
void ChatWidget::displayChatAfterButtonPressed()
{
QLabel *lbl;
lbl=new QLabel(this);
lbl->setText("Hello World 2"); <-- Does NOT appear
}
Когда QLabel добавляется из инициализации класса, тогда сообщение хорошо отображается в виджете.
Однако когда я запускаю тот же код после нажатия кнопки (через функцию в том же подклассе QWidget), текст не появляется на экране.
Я не хочу использовать макеты, поскольку мне нужно точно позиционировать свои метки.
Пытался перекрасить, но не помог ни тот, ни другой.
Как правильно и динамически отобразить метку после завершения инициализации?