Шоу () было проблемой! И спасибо за дополнительные объяснения, поможет мне иметь более чистый код.

я есть следующая иерархия в моем приложении 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), текст не появляется на экране.

Я не хочу использовать макеты, поскольку мне нужно точно позиционировать свои метки.

Пытался перекрасить, но не помог ни тот, ни другой.

Как правильно и динамически отобразить метку после завершения инициализации?

Ответы на вопрос(2)

Ваш ответ на вопрос