jaafari
3rd April 2015, 00:17
hi there!
i am using QSqlRelationalTableModel QSqlTableModel QDataWidgetMapper QSortFilterProxyModel QTableView..
to filter multiple rows in a column and i use QLineedit to display code of that filtered rows and after filtering i want to change other rows in my second table & my thrid table using tow QComboBox so if i changed content in one of that Combobox it should apply the change to all the rows that have the same code in column( N° 3) whech displaied in QLineEdit.. how to do that is it possible? i am sorry if i can't explain well due to my bad english thanks for help :o
{
ui->setupUi(this);
//bla bla bla...
//bla bla bla...
myeditModel = new QSqlRelationalTableModel(this);
myeditModel->setTable("myFirstTable");
myeditModel->setRelation(myeditModel->fieldIndex("myFirstForeignKeyID"/*1*/), QSqlRelation("mySecondTable","id","name"));
myeditModel->setRelation(myeditModel->fieldIndex("mySecondForeignKeyID"/*2*/), QSqlRelation("myThirdTable","id","name"));
myeditModel->setRelation(myeditModel->fieldIndex("myCodeID"/*3*/), QSqlRelation("myFourthTable","id","myCode"));
myeditModel->select();
QSqlTableModel *relationModel1 = myeditModel->relationModel(1);
ui->myFirstComboBox->setModel(relationModel1);
ui->myFirstComboBox->setModelColumn(relationModel1->fieldIndex("name"));
QSqlTableModel *relationModel2 = myeditModel->relationModel(2);
ui->mySecondComboBox->setModel(relationModel2);
ui->mySecondComboBox->setModelColumn(relationModel2->fieldIndex("name"));
mapper = new QDataWidgetMapper(this);
mapper->setSubmitPolicy(QDataWidgetMapper::AutoSubmit);
mapper->setModel(myeditModel);
mapper->setItemDelegate(new QSqlRelationalDelegate(this));
mapper->addMapping(ui->myFirstComboBox, 1);
mapper->addMapping(ui->mySecondComboBox, 2);
mapper->addMapping(ui->codeEdit, 3);
mapper->addMapping(ui->dateEdit, 4);
//bla bla bla...
//bla bla bla...
mapper->setCurrentIndex(row);
QString filterValue = ui->codeEdit->text();
myproxy= new QSortFilterProxyModel(this);
myproxy->setSourceModel(myeditModel);
myproxy->setFilterCaseSensitivity(Qt::CaseInsensitive);
myproxy->setFilterRegExp(QRegExp(filterValue, Qt::CaseInsensitive, QRegExp::FixedString));
myproxy->setFilterKeyColumn(/*-1*/3);
ui->EditView->setModel(myproxy);
ui->EditView->resizeRowsToContents();
ui->EditView->resizeColumnsToContents();
ui->EditView->setSortingEnabled(true);
ui->EditView->setColumnHidden(0, true);
}
myEditDialog::~myEditDialog()
{
delete ui;
}
void myEditDialog::on_codeEdit_selictionChanged(const QString &arg1)
{
myproxy->setFilterFixedString(arg1);
}
i am using QSqlRelationalTableModel QSqlTableModel QDataWidgetMapper QSortFilterProxyModel QTableView..
to filter multiple rows in a column and i use QLineedit to display code of that filtered rows and after filtering i want to change other rows in my second table & my thrid table using tow QComboBox so if i changed content in one of that Combobox it should apply the change to all the rows that have the same code in column( N° 3) whech displaied in QLineEdit.. how to do that is it possible? i am sorry if i can't explain well due to my bad english thanks for help :o
{
ui->setupUi(this);
//bla bla bla...
//bla bla bla...
myeditModel = new QSqlRelationalTableModel(this);
myeditModel->setTable("myFirstTable");
myeditModel->setRelation(myeditModel->fieldIndex("myFirstForeignKeyID"/*1*/), QSqlRelation("mySecondTable","id","name"));
myeditModel->setRelation(myeditModel->fieldIndex("mySecondForeignKeyID"/*2*/), QSqlRelation("myThirdTable","id","name"));
myeditModel->setRelation(myeditModel->fieldIndex("myCodeID"/*3*/), QSqlRelation("myFourthTable","id","myCode"));
myeditModel->select();
QSqlTableModel *relationModel1 = myeditModel->relationModel(1);
ui->myFirstComboBox->setModel(relationModel1);
ui->myFirstComboBox->setModelColumn(relationModel1->fieldIndex("name"));
QSqlTableModel *relationModel2 = myeditModel->relationModel(2);
ui->mySecondComboBox->setModel(relationModel2);
ui->mySecondComboBox->setModelColumn(relationModel2->fieldIndex("name"));
mapper = new QDataWidgetMapper(this);
mapper->setSubmitPolicy(QDataWidgetMapper::AutoSubmit);
mapper->setModel(myeditModel);
mapper->setItemDelegate(new QSqlRelationalDelegate(this));
mapper->addMapping(ui->myFirstComboBox, 1);
mapper->addMapping(ui->mySecondComboBox, 2);
mapper->addMapping(ui->codeEdit, 3);
mapper->addMapping(ui->dateEdit, 4);
//bla bla bla...
//bla bla bla...
mapper->setCurrentIndex(row);
QString filterValue = ui->codeEdit->text();
myproxy= new QSortFilterProxyModel(this);
myproxy->setSourceModel(myeditModel);
myproxy->setFilterCaseSensitivity(Qt::CaseInsensitive);
myproxy->setFilterRegExp(QRegExp(filterValue, Qt::CaseInsensitive, QRegExp::FixedString));
myproxy->setFilterKeyColumn(/*-1*/3);
ui->EditView->setModel(myproxy);
ui->EditView->resizeRowsToContents();
ui->EditView->resizeColumnsToContents();
ui->EditView->setSortingEnabled(true);
ui->EditView->setColumnHidden(0, true);
}
myEditDialog::~myEditDialog()
{
delete ui;
}
void myEditDialog::on_codeEdit_selictionChanged(const QString &arg1)
{
myproxy->setFilterFixedString(arg1);
}