2015-01-12 23 views
2

我有三個域的形式,我試圖來用的model.Below值這些字段是在我的頭文件中的代碼和.cpp文件:如何使用QDataWidgetMapper與QLineEdit的

聲明中myForm.h

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

守則myForm.cpp

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」第一的應用價值。我不知道如何使用QDataWidgetMapper在窗體的其他兩個文本字段中填充另一個「def」和「ghi」值。我查看了QDataWidgetMapper的各種可用選項,但不確定如何填充數據。它總是隻填充一個值,另外兩個字段是空的。如何從模型中讀取所有三個值,或者我在這裏做了什麼錯誤?我剛開始在我的Qt應用程序中使用模型。

+0

一個QDataWidgetMapper映射一行或一列小部件。列表模型將每個項目作爲一列中的一行。你到底想做什麼?你想要一個'mapper-> toNext()'後顯示的小部件是什麼? – Leiaz

+0

@Leiaz我有一個三個值的列表,這個列表連接到一個模型,如上所示。我希望所有三個值都顯示在三個文本字段中。就像我希望第一個文本字段顯示「abc」,下一個字段顯示「def」和最後一個「ghi」。我如何獲得該功能? – Valla

回答

2

您的模型有一列和三行。如果您想將列視爲一個「項目」,則必須使用QDataWidgetMapper::setOrientation(Qt::Orientation)指示QDataWidgetMapper的方向。默認值爲Qt::Horizontal(一個「項目」是模型的一行),您要將其設置爲Qt::Vertical

然後使用addMapping像你一樣,每行是一個部分:

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