PDA

View Full Version : Advise:Do I need QDataWidgetMapper?



fatecasino
4th March 2011, 00:27
I want a table view with 2 columns:

one simple cell
one qcombobox

I set up the QCombobox delegate and two different views just to be sure that the database gets the values the user inserts.

The user inserts a string in the empty cell and a value from the combobox.
Then he pushes the addNewRow button to insert a new record.

I am about to create a button which is going to send the database values (that the user inserted) into a txt file.

My question is,
Do I need to implement a QDataWidgetMapper?


MyDialog::MyDialog(QWidget *parent)
: QWidget(parent)
{

model = new QStandardItemModel(1, 2);
tableView = new QTableView(this);
tableView->setModel(model);

delegate = new ComboBoxDelegate;
tableView->setItemDelegateForColumn(1,delegate);


view2 = new QTableView(this);
view2->setModel(model);
view2->setItemDelegateForColumn(1,delegate);

for ( int i = 0; i < model->rowCount(); ++i )
tableView->openPersistentEditor( model->index(i, 1, QModelIndex()) );

QLineEdit* le = new QLineEdit();

QPushButton *newRowBtn = new QPushButton;
newRowBtn->setText("add new row");
connect(newRowBtn,SIGNAL(clicked()),this,SLOT(addN ewRow()));


vboxlayout = new QVBoxLayout(this);
vboxlayout->addWidget(tableView);
vboxlayout->addWidget(view2);
vboxlayout->addWidget(new QLabel("Vorgang2"));
vboxlayout->addWidget(le);
vboxlayout->addWidget(newRowBtn);
setLayout(vboxlayout);
}



void MyDialog::addNewRow()
{

QModelIndex index;
int row = model->rowCount();
model->insertRow(row);
index = model->index(row, 0);
tableView->setCurrentIndex(index);
tableView->edit(index);
tableView->openPersistentEditor( model->index(row, 1, QModelIndex()) );

}

wysota
4th March 2011, 01:04
No, you don't.