1

我对 Qt 很陌生,我遇到了一个以前从未见过的问题:当我更新 QLabel 的文本时,QString 的值在分配之前发生了变化。

这是我的代码:

dom.cpp

if (noeud.nodeName().toStdString() == "roles"){
            cout << endl << "Value of nbroles: "<< nbroles;
            w.addmsg("" + nbroles);
        }

信息.cpp

void info::addmsg(QString str){
    this->txt->setText(this->txt->text() +"\n"+ str);
    this->txt->adjustSize();
    cout << endl << "add : " << str.toStdString();
}

这是我的输出:

Value of nbroles : 41
add : 'm not here

不在这里

是字符串的一部分,它位于从未调用过的函数中的几行之下。

我不明白,这让我大吃一惊......提前谢谢你!

4

1 回答 1

2

这就是正在发生的事情,我想。您正在传递"" + nbroles给期望的函数QString。所以QString::QString(const char*)构造函数被调用。该构造函数的参数是"" + nbroles,它不是空字符串的连接并nbroles转换为字符串,而是指向任意内存的一些指针 - 字符串文字的地址按字节""递增。nbroles

尝试以这种方式调用您的函数:

w.addmsg(QString::number(nbroles));
于 2013-04-24T11:12:39.897 回答