0

これは私を夢中にさせています。QAbstractItemModel、QSortFilterProxyModel、および QStyledItemDelegate があります。すべてサブクラス化されます。次の dataChanged() を発行した後、QStyledItemDelegate::paint() をこれら 2 つのインデックス (0,0、および 0,1) に対してのみ呼び出す必要があります。ただし、表示されているすべてのセルに対して呼び出されていることを確認しました。

void my_model_t::emit_data_changed()
{
    QModelIndex start_ix    = createIndex( 0, 0 );
    QModelIndex end_ix  = createIndex( 0, 1 );
    emit( dataChanged( start_ix, end_ix ) );
}

確かに、モデルとプロキシの modelReset() および layoutChanged() シグナルの両方にスロットを接続しました。単純な printf() を実行します。ただし、呼び出されることはありません。ビューやデリゲートでファンキーなことは何もしていないと確信しています。しかし、どこを見ればよいか正確にはわかりません。

4

1 に答える 1

0

Qt フォーラムからの二重投稿:

コール スタックを少し掘り下げて、さらに多くのスロットをキャッチし始めました。QTableView の dataChanged() と paintEvent() をキャッチしていました。基本的に QTableView::dataChanged() は座標をマングルしています。

どうやら期待通りに動いているようです。あなたが私に尋ねると、絶対に恥ずべき文書です。QAbstractItemModel::dataChanged() シグナルと QAbstractItemView::dataChanged() スロットに大きなアスタリスクがありません。

他の誰もこの問題を抱えていないことを願っています。もしそうなら、彼らはこのスレッドを見つけることができます.

http://qt-project.org/forums/viewthread/14723

于 2013-02-01T05:34:16.373 に答える