gpt4 book ai didi

qt - QLabel 在 QWidget 中不显示

转载 作者:行者123 更新时间:2023-12-04 01:38:10 24 4
gpt4 key购买 nike

我的 Qt 应用程序中有以下层次结构:QMainWindow > QWidget (centralWidget) > QWidget (subclassed) > 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 子类中的函数),文本不会出现在屏幕上。

我不想使用布局,因为我需要准确定位我的标签。

尝试重新粉刷,但都无济于事。

初始化完成后如何正确动态显示标签?

最佳答案

小部件在第一次可见时调用对其子项可见,但由于您是在之后创建它,它们可能不会调用该方法,因此可能的解决方案是调用 show 方法。

void ChatWidget::displayChatAfterButtonPressed()
{
QLabel *lbl;
lbl=new QLabel(this);
lbl->setText("Hello World 2");
lbl->show();
}

评论: QMainWindow 设置一个中心部件,然后创建 chatWidget 作为 QMainWindow 的父级,这对我来说似乎很奇怪,通常不建议将子级添加到 QMainWindow,因为它具有给定的结构,应该做的是将它放在 centralwidget 中。

关于qt - QLabel 在 QWidget 中不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48612159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com