Qt - 检测 QListView 中项信息的变化

3

我有一个连接到QStandardItemModel的QListView。如何检测模型或QListView中的任何信息更改?我尝试使用itemChanged()信号和插槽来处理模型,但它似乎会导致整个程序崩溃。

Qbject::connect(bugModel, SIGNAL(itemChanged(QStandardItem*)), this, SLOT(bugInfoChanged()));

这是我用来连接 Signal 的代码。函数 bugInfoChanged() 只运行了一个 qDebug(),内容为 "Changed"。但是当我启动程序时,它会显示崩溃错误。


您想在用户更改数据时更新模型,还是在模型更改时更新视图呢? - Lol4t0
也许您可以发布更多代码,以显示您在哪里使用“itemChanged”信号。那是正确的信号注册方式;肯定还有其他问题。 - Dave Mateer
当用户更改模型中的信息时,我想将一些信息保存在QSettings中,如果列表中进行更改,则会自动更新该信息。 - boxofapps
你为什么确定你的崩溃与这个连接有关?你展示的代码绝对不会导致崩溃。你的槽代码可能会产生崩溃或完全不同的问题。 - Lol4t0
-对答案给出的注释-(我无法弄清如何以适当的方式显示代码) - boxofapps
2个回答

0
当我注释掉这一行(//QObj...)时,程序不会崩溃,但是当我取消注释时它就会崩溃。我将其放在了“私有槽”区域中:
    void bugInfoChanged();

在C++中,它就像这样:

    void MainWindow::bugInfoChanged()
    {
       qDebug() << "Changed";
    }

我不知道是什么原因导致了崩溃 :/


0

我自己解决了。原来如果我把连接代码放在一个函数中,这个函数会在列表被填充时调用,那么它就可以正常工作了。以前它会崩溃,因为当应用程序启动时,列表还没有任何项目。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接