我有一个QListView,我从中获得了一个带有list-> model()的QAbstractItemModel;
在此之后,我想将dataChanged信号连接到我的自定义QObject:
if( QObject::connect(model, SIGNAL(dataChanged (const QModelIndex , const QModelIndex ) ),
customObject_,SLOT(onText(const QModelIndex , const QModelIndex )) ) )
cout << "SIGNAL SLOT connection successful" << endl;
else
cout << "SIGNAL SLOT connection ERROR" << endl;
这是我的自定义对象:
class CustomObject : public QObject
{
Q_OBJECT
public:
CustomObject (QObject *parent);
~CustomObject ();
public slots:
void onText(const QModelIndex & topLeft, const QModelIndex & bottomRight );
private:
};
我做错了吗? QObject调用返回true,我在onText函数中有一个cout,但是当QListView被更改时,什么也没有打印。
答案 0 :(得分:4)
这可能意味着信号永远不会发出。尝试拨打
model-&gt; setData(model-&gt; index(0,0),Qt :: EditRole,3.14);
如果那个没有调用你的插槽,那么setData()
的实现可能是错误的并且不会发出dataChanged(QModelIndex,QModelIndex)
,否则customObject_
已被删除。
如果不是这种情况,您需要向我们提供更多信息。
答案 1 :(得分:0)
也许有&amp;在你的功能..
但如果是问题,它应该显示您的函数错误...
可能这个信号没有被发现。尝试连接另一个信号..你可以像那样测试..
答案 2 :(得分:-1)
你试过
吗?QObject::connect(model, SIGNAL(dataChanged (const QModelIndex &, const QModelIndex &) ),
customObject_,SLOT(onText(const QModelIndex &, const QModelIndex &)) );
?又确保参数通过引用传递。 检查this tutorial。