向 QListWidget 的现有项目添加文本

Adding text to existing item of QListWidget

所以我想在我的 QListWidget 列表中添加一个额外的文本,代码如下:

for (int i = 0; i < ui->history->count(); i++ )
{
    ui->history->item(i)->text().append(QTime::currentTime().toString());
}

这不起作用。

我已经 qDebugged 所有列表项都带有此代码:

qDebug() << "item(" << i << ")->text() : " << ui->history->item(i)->text();

之后我收到了这个输出:

item( 0 )->text() :  "http://www.google.ru/?gfe_rd=cr&ei=cT6wV9PDKI-8zAXjlaCIDw"
item( 1 )->text() :  "https://news.google.ru/nwshp?hl=ru&tab=wn"  
item( 2 )->text() :  "https://news.google.ru/news?pz=1&hl=ru&tab=nn"
item( 3 )->text() :  "https://news.google.ru/news?pz=1&hl=ru&tab=nn"

很明显这个函数输出item的所有文本,那么为什么我不能在那里附加任何其他字符串呢?

隐式共享确保不直接更改文本。您必须明确设置文本值:

QString txt = ui->history->item(i)->text().append(QTime::currentTime().toString());
ui->history->item(i)->setText (txt);

text() returns 文本按值,而不是按引用。您需要使用setText修改文本。