0

QT5.0を使用してQTを初めて使用するアプリケーションを開発しています。ひどいことに、私は長い学習曲線のためにあまり時間がありません。独自のTableModelを派生させ、編集可能なTableViewに設定しました。TableViewはモデルのデータを表示し、機能します。しかし、テーブルビューのセルをアクティブにすると、データが消えます。ドキュメントを見ると、QTableViewは「アクティブ化」と呼ばれるシグナルと「編集」と呼ばれるスロットを持つQAbstractItemViewクラスから派生していることがわかりました。だから、私は「アクティブ化された」信号が「編集」スロットに接続されていると思います。しかし、「編集」は仮想ではないので、オーバーライドすることはできません。子クラスを親の「アクティブ化された」シグナルに接続できますが、実際には、TableViewオブジェクトの現在のデータを保存するためにこのシグナルを処理する方法がわかりません。コードがSqlTableModelを使用している場合は問題ありません。

4

1 に答える 1

3

データ関数を確認します。

QVariant TableModel::data(const QModelIndex &index, int role) const
    if( !index.isValid() )
        return QVariant();       
    if( role == Qt::DisplayRole || role == Qt::EditRole) {
        return <your data>
    }
    return QVariant();
}

EditRole役割を処理していることを確認してください。

幸運を!

于 2013-03-02T11:57:25.427 に答える