gpt4 book ai didi

c++ - QListView中的QT4 QstringListModel

转载 作者:可可西里 更新时间:2023-11-01 18:41:59 25 4
gpt4 key购买 nike

这是我的第一个 QT 问题 - 我通常是一名 C# 程序员,所以请原谅我问了一个愚蠢的问题,我确信这个问题有一个非常简单的答案,但我似乎找不到:

我想将项目添加到列表中,暂时假设它们是字符串。我有一个 QListView:UI->listView、一个 QStringList 和一个 QStringListModel:

stringList = new QStringList();
stringList->append("ABC");
stringList->append("123");

listModel = new QStringListModel(*stringList, NULL);
ui->listView->setModel(listModel);

stringList->append("xyz");

此示例在我的列表中编译并显示“ABC”和“123”,但不显示“xyz”。为什么不?我需要以某种方式重新绘制 listView 吗?我对 NULL 做错了什么吗?

谢谢。

最佳答案

如果您经常需要修改字符串列表并且有需要更新的连接 View ,您可以考虑首先取消 QStringList 并单独使用 QStringListModel。您可以使用 insertRows/removeRows 和 setData 在那里添加/删除数据。这确保 View 始终以您期望的方式反射(reflect)模型。这可以包装起来以防止繁琐的工作。像(未经测试):

class StringList : public QStringListModel
{
public:
void append (const QString& string){
insertRows(rowCount(), 1);
setData(index(rowCount()-1), string);
}
StringList& operator<<(const QString& string){
append(string);
return *this;
}
};

关于c++ - QListView中的QT4 QstringListModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5802313/

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