2017-02-27 51 views
0

私は先週、行と列を指定してQModelIndexを作成するのに苦労しました。QModelIndexを作成する

また、既存のQModelIndexのrow()の値を変更することで解決します。

ご協力いただければ幸いです。

編集:そのクラス内

void MyClass::doStuff(QModelIndex index) 

私が機能を持っている:手での目標は、これです

cannot call member function ‘QModelIndex QAbstractItemModel::createIndex(int, int, void*) const’ without object 
     QModelIndex nIndex = QAbstractItemModel::createIndex(1, 2); 
                   ^

QModelIndex nIndex = QAbstractItemModel::createIndex(1, 2); 
int b = nIndex.row(); 
qInfo() << "b" << b; 

はエラーで失敗します、私は本質的に

if (index.column() != 1) 
{ 
    int a=index.row(); 
} 

だから私の目標は、別のクラスからその関数を呼び出すとQModelIndexそれを渡すことですが、そのインデックスは、行/列を使用して作成されたものとするために私が指定します。e。次。

答えて

1

これはわかりませんが、QAbstractItemModel::index(row, column)http://doc.qt.io/qt-5/qabstractitemmodel.html#index)の方法でQModelIndexを作成することができます。一方、それはあなたとの間でそれほど長く苦労しているようですが、もう少し説明してください。

例:

QAbstractTableModel *model = ...; 

// then you can do something like 
QModelIndex nIndex = model->index(1,2); 
int b = nIndex.row(); 
qInfo() << "b" << b; 
+0

私は本当の苦闘はQtに新しいから来ると思う。あなたが言ったことは、私が欲しいと思ったことだと思います。しかし、苦闘し続けている。私はいくつかの詳細を持って私の最初の投稿を更新しました。ありがとうございました! –

+0

私の答えを変更しました。最初のリンクは間違っていました。あなたは 'QAbstractItemModel :: index'(保護されている' createIndex'ではなく)を使うことができます。もし新しいものであれば、静的ではありません。データを格納する有効な "データモデル"が必要で** **インデックスメソッドを呼び出す必要があります。私はどこかのモデルを持っていると思います。それ以外に 'QModelIndex'を得るのは何ですか? – xander

+0

@ MetalWing私は答えに短い例を追加しましたが、あなたがモデルとして実際に使用しているものに依存します。 :) – xander

4

あなたは、そのindex()メソッドを使用して、適切なモデルから新しいインデックスを取得することができます。

既にご希望のインデックスと同じ親を持つモデルからインデックスを持っている場合、あなたはそのインデックスのsibling()方法使用して別のインデックスを取得することができます

void MyClass::doStuff(const QModelIndex& index) 
{ 
    // get the value at row zero, same column 
    const QModelIndex header = index.sibling(0, index.column()); 
} 

指数自体は一度不変です作成した行、列、または親を変更することはできません(背後のモデルの変更を無効にすることを除いて)。

関連する問題