2017-02-27 6 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를 전달하는 것입니다,하지만 인덱스는 행/열로 생성 된 것으로 내가 지정 : 전자 다음과 같습니다.

답변

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()); 
} 

지수 자체는 한 번 불변 생성 - 행, 열 또는 상위를 변경할 수 없습니다 (뒤에서 모델을 변경하여 무효화하는 것 외).