私は Qt のモデル/ビュー フレームワークの初心者です。QAbstractTableModel サブクラス (MyModel) を QTableView で使用すると問題が発生します。MyModel オブジェクトを作成した後、2 行と 2 列に設定したいと思います。すべてのクラス変数を設定してから dataChanged() SIGNAL を発行する初期化関数がありますが、それでもビューには何も表示されません。
class MyModel : QAbstractTableModel
{
public:
MyModel();
Initialise(double **a, int r, int c);
private:
int row;
int column;
double **array;
}
MyModel::Initialise(double **a, int r, int c)
{
array = a;
row = r;
column = c;
emit dataChanged(index(0, 0), index(r - 1, c - 1));
}
読み取り専用アクセスに必要なすべての機能を再実装しました。しかし、まだ空白のウィンドウが表示されます。上記のコードは説明のためにメモ帳で作成したものなので、構文エラーは無視してください。QAbstractTableModel からカスタム モデルを作成するための Qt SDK の例が見つかりませんでした。データをモデルに初期化する正しい方法を教えてください。
編集:
QVariant TableModel::data(const QModelIndex &index, int role) const
{
if(!index.isValid())
return QVariant();//currently it is returning from here, why???
switch(role)
{
case Qt::DisplayRole:
{
if(index.column()==0)
return QString::number(array[index.row()][index.column()]);
break;
}
}
}