2

list->model(); で QAbstractItemModel を取得する QListView があります。

この後、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

これはおそらく、シグナルが発信されないことを意味します。電話してみる

model->setData( model->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 に答える