2015-01-12 5 views
2

와 QDataWidgetMapper를 사용하는 방법을 내 헤더 파일의 코드 및 .cpp 파일입니다 myForm.h내가 세 개의 필드와 양식을 가지고 있고이 model.Below에서 값이 필드를 채우기 위해 노력하고 QLineEdit

private: 
    Ui::MyForm *ui; 
    QStringListModel *model; 
    QDataWidgetMapper *mapper; 

코드

model=new QStringListModel(this); 

QStringList list; 
list << "abc"<<"def"<<"ghi"; 
model->setStringList(list); 
mapper=new QDataWidgetMapper(); 
mapper->setModel(model); 
mapper->addMapping(ui->lineEdit_13,0); 
mapper->toFirst(); 

나는 텍스트 필드가 "ABC"첫 번째 값으로 채워집니다 응용 프로그램을 실행 myForm.cpp

있다. QDataWidgetMapper를 사용하여 form의 다른 두 텍스트 필드에서 다른 두 값 "def"와 "ghi"를 채우는 방법을 잘 모르겠습니다. QDataWidgetMapper에 사용할 수있는 다양한 옵션을 살펴 보았고 데이터를 채우는 방법을 잘 모릅니다. 항상 하나의 값만 채우고 다른 두 필드는 비어 있습니다. 어떻게 3 가지 값을 모두 모델에서 읽을 수 있습니까? 아니면 여기서 잘못된 것이 있습니까? Qt 응용 프로그램에서 모델을 사용하기 시작했습니다.

+0

QDataWidgetMapper 하나의 행이나 위젯 하나의 열 중 하나에 매핑 : 당신이했던 것처럼

이 그럼 당신은 addMapping를 사용, 각 행은 섹션입니다. 목록 모델에는 각 항목이 하나의 열에있는 행으로 있습니다. 정확히 무엇을하고 싶니? 위젯이'mapper-> toNext()'뒤에 무엇을 보여주기를 원합니까? – Leiaz

+0

@Leiaz 세 가지 값의 목록이 있으며이 목록은 위에 표시된 것과 같이 모델에 첨부됩니다. 세 개의 값을 모두 세 개의 텍스트 필드에 표시하고 싶습니다. 마치 첫 번째 텍스트 필드에 "def"와 마지막 "ghi"를 표시 할 다음 필드를 "abc"로 표시하고 싶습니다. 어떻게 그 기능을 사용할 수 있습니까? – Valla

답변

2

모델에는 한 열과 세 행이 있습니다. 열을 하나의 "항목"으로 취급하려는 경우 QDataWidgetMapper의 방향을 QDataWidgetMapper::setOrientation(Qt::Orientation)으로 지정해야합니다. 기본값은 Qt::Horizontal (하나의 "항목"은 모델의 한 행임)이고 Qt::Vertical으로 설정하려고합니다.

mapper->addMapping(ui->lineEdit_abc,0); 
mapper->addMapping(ui->lineEdit_def,1); 
mapper->addMapping(ui->lineEdit_ghi,2);