Witam, mam problem, u mnie w aplikacji jest funkcja edit przez którą edytuję się pewien obiekt. Wszystko działało na podstawie zaznaczenia w TableView i przenoszenia to do modela jako w sumie ten sam rekord przez id,
dopóki nie dodałem do programu możliwość sortowania w w QTableViewie :( teraz niestety wybiera mi rekord inny niż jest zaznaczony, myślałem długo i nie mam pomysłu jak to rozwiązać.
void Supplies_menu::on_btnedit_clicked()
{
///QModelIndex index = ui->tableView->selectionModel()->selectedIndexes().first();
// ui->tableView->setSortingEnabled(true);
if(ui->tableView->selectionModel()->hasSelection())
{
QModelIndex index = ui->tableView->selectionModel()->selectedIndexes().first();
if (index.isValid())
{
int selectedRow;
selectedRow = index.row();
Adding *add = new Adding(selectedRow,this);
add->setModal(true);
add->database_open();
add->exec();
table_display();
}
else {QMessageBox::critical(this,"error","error");}
}
else {
QMessageBox::information(this,"Selection","You haven't selected any index");
}
}
void Supplies_menu::on_btndel_clicked()
{
if(ui->tableView->selectionModel()->hasSelection())
{
QModelIndex index = ui->tableView->selectionModel()->selectedIndexes().first();
if (index.isValid())
{
////////////////////WPISZ TU DIALOG czxy jest siur
int row = index.row();
Adding *add = new Adding(row,this);
add->database_open();
add->database_delete();
table_display();
}
else {
QMessageBox::warning(this,"Selected Index","Your selection is wrong. Try again");
}
}
else {
QMessageBox::information(this,"Selection","You haven't selected any index");
}
}
void Adding::database_edit()
{
database_open();
if(db.open())
{
query.prepare("SELECT * FROM produkty");
MySqlTableModel *model = new MySqlTableModel(this,db);
query.exec();
model->wywSetQuery(query);
nm = model->record(IdInView).value("name").toString();
nt = model->record(IdInView).value("notes").toString();
QString Kc = model->record(IdInView).value("kcal").toString();
QString Car = model->record(IdInView).value("carbonates").toString();
QString Pro = model->record(IdInView).value("proteins").toString();
QString Fa = model->record(IdInView).value("fats").toString();
QString Wei = model->record(IdInView).value("weight").toString();
dat = model->record(IdInView).value("date").toDate();
iconT = model->record(IdInView).value("img").toByteArray();
Type = model->record(IdInView).value("type").toString();
IdInBase = model->record(IdInView).value("productid").toInt();
ui->lnname->setText(nm);
ui->lnnotes->setText(nt);
ui->lnkcal->setText(Kc);
ui->lncarbonates->setText(Car);
ui->lnproteins->setText(Pro);
ui->lnfats->setText(Fa);
ui->lnweight->setText(Wei);
if(Type=="1")
{
ui->btn1->setVisible(true);
ui->btn2->setVisible(false);
ui->btn3->setVisible(false);
ui->btn4->setVisible(false);
}
else if(Type=="2")
{
ui->btn1->setVisible(false);
ui->btn2->setVisible(true);
ui->btn3->setVisible(false);
ui->btn4->setVisible(false);
}
else if(Type=="3")
{
ui->btn1->setVisible(false);
ui->btn2->setVisible(false);
ui->btn3->setVisible(true);
ui->btn4->setVisible(false);
}
else if(Type=="4")
{
ui->btn1->setVisible(false);
ui->btn2->setVisible(false);
ui->btn3->setVisible(false);
ui->btn4->setVisible(true);
}
QImage image; image.loadFromData(iconT);
ui->icon->setPixmap(QPixmap::fromImage(image));
//img.loadFromData(Icon);
// ui->icon->setPixmap(QPixmap::fromImage(img));
// QVariant currentIcon = model->data(model->index(id,2),0);
// QByteArray bytes = currentIcon.toByteArray();
}
else QMessageBox::warning(this,"Connecting","Database conection failed!");
}
Tam potem jest dodawanie do database itd spokojnie ;)