我的 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 应用程序初始化同时发生)中,我有以下代码:
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 子类中的函数)时,文本不会出现在屏幕上。
我不想使用布局,因为我需要精确定位标签。
尝试重新粉刷,但都没有帮助。
初始化完成后如何正确动态显示标签?
小部件第一次可见时会调用对其子级可见,但由于您是在之后创建它,因此它们可能不会调用该方法,因此可能的解决方案是调用 show 方法。
void ChatWidget::displayChatAfterButtonPressed()
{
QLabel *lbl;
lbl=new QLabel(this);
lbl->setText("Hello World 2");
lbl->show();
}
comment:我觉得奇怪的是,QMainWindow设置了一个中央小部件,然后创建chatWidget作为QMainWindow的父级,通常不建议将子级添加到QMainWindow,因为它具有给定的结构,应该做的是放置它位于中央小部件内。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)