0

私のプログラムでは、QStandardItemModel を表示するように設定された QTableView があります。モデルを接続したい

itemChanged(QStandardItem*)

私のSLOTに信号を送ってください。やった

connect(dynamic_cast<QStandardItemModel*>(ui->tableView->model()), SIGNAL(itemChanged(QStandardItem*)), this, SLOT(saveItem(QStandardItem*)));

しかし、これは常に接続に失敗します (false を返します)。dynamic_cast が原因だと推測していますが、よくわかりません。

私は何を間違っていますか??

4

3 に答える 3

0

QTableView::model()が返された場合でも、接続を行う前にQAbstractItemModel*モデルが a に設定されている場合、実際のオブジェクトは依然として aであるため、ポインターをその型にキャストする必要なく接続が機能するはずです。QStandardItemModel* QStandardItemModel

考えられる接続エラーには、null ポインター (を呼び出す前にモデルを設定しないことによるmodel())、スロット/シグナル名のスペルミス、関数をスロット/シグナルとして宣言していないなどがあります。

PS:を使用して取得し、クラスの特定の関数にアクセスする必要があるたびにキャストを繰り返すQStandardItemModelよりも、まだ持っていない場合は、クラスのポインター メンバーとして持つ方がよい場合があります。 また、追加の利点として、QtCreator は実際のオブジェクト タイプも認識しているため、オートコンプリートが機能します。model()QStandardItemModel

于 2013-08-23T14:27:06.697 に答える
0

モデルをテーブルに設定した後に接続すると、ジョブが実行されます。モデルをテーブルに設定すると、QStandardItemModel が返されるため、キャストする必要はありません。

于 2013-08-22T15:13:29.873 に答える