2010-03-07 3 views
1

나는 마법사 페이지 안에 QListView를 가지고있다. 여러 항목이 있으며 다중 선택이 활성화되어 있습니다. 나는 '다음'버튼을 클릭했을 때 필드로 등록 된 선택된 아이템을 원한다.마법사 페이지의 QListView에서 선택한 모든 항목을 등록하는 방법은 무엇입니까?

가능합니까? 그리고 만약 registerfield가 작동하지 못한다면 모델 행을 연결() 시키면 Model 행을 따라 반복하는 것이 initializePage()에서 작동하지 않습니다.

제안 사항?

감사합니다. 어쩌면

답변

1

이 가장 좋은 해결책은 아니지만, 잘 작동합니다 :

QListView을 포함 wizardpage에 속성을 추가하고 selectionModel에 포인터를 반환 할 수 있습니다. 예 : 같은 : ListPage의 생성자에서

class ListPage : public QWizardPage 
{ 
Q_OBJECT 
Q_PROPERTY(QItemSelectionModel* selectionModel READ selectionModel) 

public: 
    ListPage(QWidget * parent = NULL); 
    QItemSelectionModel * selectionModel(void) 
    { 
     return listView->selectionModel(); 
    }; 
private: 
    QListView *listView; 
}; 
Q_DECLARE_METATYPE(QItemSelectionModel*);

당신은 다음과 같이 qRegisterMetaTyperegisterField 전화를해야 :

ListPage::ListPage(QWidget * parent) : QWizardPage(parent) 
{ 
    ... 
    listView = new QListView(this); 
    listView->setSelectionMode(QAbstractItemView::MultiSelection); 
    listView->setModel(model); 

    qRegisterMetaType("QItemSelectionModel*"); 
    registerField("listViewSelection", this, "selectionModel"); 
    ... 
}

지금 당신이 field("listViewSelection").value<QItemSelectionModel*>()를 호출하여 마법사 사방에서 선택된 항목에 액세스 할 수 있습니다.

희망 사항입니다.

+0

답변과 훌륭한 설명 + 코드를 보내 주셔서 감사합니다. 코드를 더 적게 말하면 :) 내일 시도해 보겠습니다. – somebody

+0

결국 작동합니까? – Elrohir

+0

죄송합니다. 문서를 작성하는 데 너무 깊이 빠져있었습니다. 아직 실행되지 않았지만 계속 시도 할 것입니다. – somebody

관련 문제