2016-10-27 3 views
0

파일에서 내용을 읽은 후 Qt5.7 응용 프로그램을 만들고 있는데, QListView을 채우고 있습니다. 여기에 정확한 코드가 있습니다.Qt5 : 목록보기에서 클릭 한 항목의 가치를 얻으십시오.

이제는 내가 설정 한 QListView에 목록이 잘 표시됩니다. 지금해야 할 일은 더블 클릭 된 문자열을 가져 와서 다른 곳에서 그 값을 사용하는 것입니다. 어떻게해야합니까? 내가 뭘하려 무엇

QListView

... // the rest of the code 
connect(ui->listView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(fetch())); 
... 

그리고 그때 나는 기능 fetch

void Window::fetch() { 
    qDebug() << "Something was clicked!"; 
    QObject *s = sender(); 
    qDebug() << s->objectName(); 
} 

에게이 이런 식으로 리스너를 부착했다 그러나 objectName() 함수가 반환 "목록보기"가 아닌 목록보기 항목 또는 색인.

+1

슬롯에 매개 변수로'QModelIndex'를 추가하고 그 슬롯으로 작업해야합니다. – Hayt

답변

1

신호는 이미 클릭 한 QModelIndex을 제공합니다.

그래서 당신이 당신의 슬롯을 변경해야합니다 :

void Window::fetch (QModelIndex index) 
{ 
.... 

QModelIndex

지금 열 및 행 속성이 있습니다. 목록에 열이 없으므로 행에 interessted됩니다. 이것은 클릭 된 항목의 색인입니다.

//get model and cast to QStringListModel 
QStringListModel* listModel= qobject_cast<QStringListModel*>(ui->listView->model()); 
//get value at row() 
QString value = listModel->stringList().at(index.row()); 
+0

그게 효과가있어. 감사! – Zeokav

0

슬롯의 매개 변수로 색인을 추가해야합니다. 해당 색인을 사용하여 목록에 액세스 할 수 있습니다.

코드가 이런 식이어야합니다.

void Window::fetch (QModelIndex index) { /* Do some thing you want to do*/ }

관련 문제