1

QTableView遅延読み込みを使用してコントロールに取り組んでいます。

QListWidget表示する必要がある何千ものレコードがあり、単純なアプローチを使用したときにひどく遅れていました。

今、次のdataメソッドで QAbstractItemModel を使用します。

QVariant MyModel::data(const QModelIndex & index, int role) const
{
    int col = index.column();
    int row = index.row();

    if (role == Qt::DecorationRole && col == 0)
    {            
        return getIcon(row); // icons in the first column
    }
    else if (role == Qt::DisplayRole && col == 1)
    {
        return getText(row); // text in the second column            
    }
    else
    {
        return QVariant();
    }
}

結果のテーブル ビューはうまく機能します。高速でスムーズです。

ただし、大きな問題が 1 つあります。それは、選択範囲が完全に壊れていることです。

アイテムを選択しても、すぐに青色で強調表示されません。テーブルをスクロールして、再描画して青色の背景を表示する必要があります。(私は Windows 7 を使用しています。)

また、アイテムを選択するときに点線の長方形が表示されません。

確認しましたが、テーブル ビューの選択モデルが null ではありません。また、Qt の他のモデルの実装もいくつか調べました。それらは同様のデータ メソッドを持っていますが、選択の問題はありません。

QAbstractTableItemandからのサブクラス化も試みましたがQAbstractListItem、何もありませんでした。

ここであなたの助けに感謝します。

4

1 に答える 1

0

こんなくだらない質問ですみません...

次の行を削除してこれを解決しました。

tableView->setRootIndex(model->index(0, 0));
于 2012-05-31T17:07:07.763 に答える