首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在数据未更改时触发QStandardItemModel上的QStandardItemModel()

在数据未更改时触发QStandardItemModel上的QStandardItemModel()
EN

Stack Overflow用户
提问于 2018-01-25 19:16:23
回答 1查看 2.2K关注 0票数 0

我有以下连接线:

代码语言:javascript
复制
connect(my_QStandardItemModel ,SIGNAL(itemChanged(QStandardItem*)),
    this,SLOT(cellEditEndedCalled(QStandardItem*)));

由于某种原因,每当我在表中的单元格上进入编辑模式(双击)并单击另一个单元格时,即使我没有对数据做任何更改,也会调用cellEditEndedCalled()

对为什么会发生这种事有什么想法吗?

编辑:尝试使用dataChanged(...)而不是itemChanged(...),但是仍然在调用插槽。

my_QStandardItemModel的实现:

代码语言:javascript
复制
class my_QStandardItemModel :public QStandardItemModel
{
    typedef QStandardItemModel baseClass;
    Q_OBJECT

public:
    my_QStandardItemModel ();
    virtual ~my_QStandardItemModel ();

...

之后不会覆盖任何信号。

EN

回答 1

Stack Overflow用户

发布于 2018-01-25 20:02:27

因为信号itemChanged不适合你的情况。QStandardItemModel继承了另一个信号形式QAbstractItemModel

代码语言:javascript
复制
    void QAbstractItemModel::dataChanged(const QModelIndex &topLeft, const 
QModelIndex &bottomRight, const QVector<int> &roles = QVector<int> ())

它在发生更改的索引上发出QModelIndex信息:您的单元格。

您需要将该信号连接到您的插槽(要进行修改以匹配新的信号签名)。

为什么发出itemChanged信号,即使您没有修改数据:因为该信号是在您更改项时发出的,而不是中的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48450321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档