动态更改文本 qlabel

Dynamically change text qlabel

本文关键字:qlabel 文本 动态      更新时间:2023-10-16

对不起我的英语。我需要动态更改文本 qlabel。

class Game:
{
...
    std::shared_ptr<QWidget> m_hint;
    QLabel *m_label;
    QHBoxLayout *m_layout;
}
void Game::setTextToHint(std::string str)
{
    m_label = new QLabel();
    m_layout = new QHBoxLayout();
    m_label->setText(QString::fromUtf8(str.c_str()));
    m_layout->addWidget(m_label);
    m_hint->setLayout(m_layout);
}

我使用这个函数,例如两次:

setTextToHint("One");
setTextToHint("First");

但最终label = "One"

好的,我明白了。我只是在类构造函数中受苦。

m_label = new QLabel();
m_layout = new QHBoxLayout();

但问题实际上是:

我仍然想要求使用stl智能指针这个qt对象不好。我不能使用库中的智能指针 QT 只有 STL。我该怎么办?

你应该只调用setText() setTextToHint,其他一切都应该在Game的构造上完成。

根据您关于使用 stl 智能指针的评论,我认为您担心直接使用new时会发生内存泄漏。事实上,你的用法大多是正确的 - Qt在使用适当的父子设置的同时提供自己的内存管理,所以没有理由将Qt对象分配与stl智能指针混合(一般来说)。

关于这个话题的更多对话可以在这里找到:stackoverflow.com/questions/3264420/lifetime-of-qt-objects