繁体   English   中英

QListView中的QT4 QstringListModel

[英]QT4 QstringListModel in QListView

这是我的第一个 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 做错了吗?

谢谢。

如果您经常需要修改字符串列表并且有需要更新的连接视图,您可以考虑首先取消 QStringList 并单独使用 QStringListModel。 您可以使用 insertRows/removeRows 和 setData 在此处添加/删除数据。 这可确保视图始终以您期望的方式反映 model。 这可以被包装以防止繁琐的工作。 类似(未经测试):

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;
  }
};

您已经修改了QStringList ,您需要修改 model:

stringList->append("xyz");
listModel->setStringList(*stringList);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM