QObject :: connect问题与QAbstractItemModel

时间:2009-07-29 12:34:57

标签: qt listview signals-slots qabstractitemmodel

我有一个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被更改时,什么也没有打印。

3 个答案:

答案 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