2

我有一个 QListView,我从中获得一个 QAbstractItemModel 与 list->model();

在此之后,我想将 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 更改时没有打印任何内容。

4

3 回答 3

4

这可能意味着永远不会发出信号。试着打电话

模型->setData(模型->index(0, 0), Qt::EditRole, 3.14);

如果那个没有调用你的插槽,那么实现setData()可能是错误的并且没有发出dataChanged(QModelIndex,QModelIndex),或者customObject_已经被删除。

如果两者都不是,您需要向我们提供更多信息。

于 2009-07-29T13:35:34.677 回答
0

也许你的函数中有 & ..

但如果是问题所在,它应该由您的函数显示错误...


可能没有发出这个信号。尝试连接另一个信号..你可以这样测试它..

于 2009-07-29T13:35:06.300 回答
-1

你试过吗

QObject::connect(model, SIGNAL(dataChanged (const QModelIndex &, const QModelIndex &) ),
                    customObject_,SLOT(onText(const QModelIndex &, const QModelIndex &)) );

? 又名确保参数通过引用传递。检查本教程

于 2009-07-29T13:32:52.620 回答