QListView中的QT4 QstringListModel

| 这是我的第一个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
,您需要修改模型:
stringList->append(\"xyz\");
listModel->setStringList(*stringList);
    
如果您经常需要修改字符串列表并需要更新连接视图,则可以考虑首先放弃使用QStringList,而仅使用QStringListModel。您可以使用insertRows / removeRows和setData在此处添加/删除数据。这样可以确保视图始终以您期望的方式反映模型。可以将其包装起来以防止繁琐的工作。像(未经测试的):
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;
  }
};
    

要回复问题请先登录注册