我有以下连接线:
connect(my_QStandardItemModel ,SIGNAL(itemChanged(QStandardItem*)),
this,SLOT(cellEditEndedCalled(QStandardItem*)));
出于某种原因,每当我在表格内的单元格上进入编辑模式(双击)并单击另一个单元格时,即使我没有对我的数据进行任何更改,也会调用cellEditEndedCalled()
。 / p>
关于为什么会发生这种情况的任何想法?
编辑:
尝试使用dataChanged(...)
代替itemChanged(...)
,但仍在调用广告位。
my_QStandardItemModel的实现:
class my_QStandardItemModel :public QStandardItemModel
{
typedef QStandardItemModel baseClass;
Q_OBJECT
public:
my_QStandardItemModel ();
virtual ~my_QStandardItemModel ();
...
之后不会覆盖任何信号。
答案 0 :(得分:0)
因为信号itemChanged
不适合您的情况。 QStandardItemModel
继承了另一种单一形式QAbstractItemModel
void QAbstractItemModel::dataChanged(const QModelIndex &topLeft, const
QModelIndex &bottomRight, const QVector<int> &roles = QVector<int> ())
发出有关发生更改的索引的QModelIndex
信息:您的单元格。
您需要将该信号连接到您的插槽(要进行修改以匹配新的信号签名)。
为什么即使您没有修改数据也会发出itemChanged
信号:因为当您更改项目 NOT 时,该信号会发出。