我有以下连接线:
connect(my_QStandardItemModel ,SIGNAL(itemChanged(QStandardItem*)),
this,SLOT(cellEditEndedCalled(QStandardItem*)));由于某种原因,每当我在表中的单元格上进入编辑模式(双击)并单击另一个单元格时,即使我没有对数据做任何更改,也会调用cellEditEndedCalled()。
对为什么会发生这种事有什么想法吗?
编辑:尝试使用dataChanged(...)而不是itemChanged(...),但是仍然在调用插槽。
my_QStandardItemModel的实现:
class my_QStandardItemModel :public QStandardItemModel
{
typedef QStandardItemModel baseClass;
Q_OBJECT
public:
my_QStandardItemModel ();
virtual ~my_QStandardItemModel ();
...之后不会覆盖任何信号。
发布于 2018-01-25 20:02:27
因为信号itemChanged不适合你的情况。QStandardItemModel继承了另一个信号形式QAbstractItemModel
void QAbstractItemModel::dataChanged(const QModelIndex &topLeft, const
QModelIndex &bottomRight, const QVector<int> &roles = QVector<int> ())它在发生更改的索引上发出QModelIndex信息:您的单元格。
您需要将该信号连接到您的插槽(要进行修改以匹配新的信号签名)。
为什么发出itemChanged信号,即使您没有修改数据:因为该信号是在您更改项时发出的,而不是中的数据。
https://stackoverflow.com/questions/48450321
复制相似问题