Portál AbcLinuxu, 10. května 2025 01:26
void Dialog::NacteniFirem() { QSqlQuery query("SELECT nazev FROM firma"); while( query.next()) { ui->combobox->addItem(query.value(0).toString(),query.value(0)); } query.finish(); }Potom si vytvoříš pro 1. combobox funkci pro signál currentIndexChanged, ve kterém vyčistíš obsah 2. comboboxu a načteš do něj 2.SQL dotazem seznam zaměstanců.
void MainWindow::on_combobox_currentIndexChanged(QString Text) { ui->combobox2->clear(); QSqlQuery query; query.prepare("SELECT id,jmeno,prijmeni FROM zamestnanci WHERE firma = ?"); query.bindValue(0, ui->combobox->currentText()); query.exec(); while( query.next()) { ui->combobox2->addItem(query.value(0).toString(),query.value(0)); } query.finish(); }Snad jsem nenapsal nějakej blud, už jsem v Qt chvilku nic nedělal. Kdyžtak sem hoď nějakej kód co už máš, na tom bych ti měl být schopen lépe pomoci. Jinak doporučuju používat Qt Creator :)
model = new QSqlRelationalTableModel(this); model->setEditStrategy(QSqlTableModel::OnManualSubmit); model->setTable("firma"); typeIndex = model->fieldIndex("id_adresa"); model->setRelation(typeIndex, QSqlRelation("adresa", "id_adresa", "ulice")); model->select(); ui.comboBoxFirmaNazev->setModel(model); //Mapovani sloupcu tabulek na bunky GUI ui.comboBoxFirmaNazev->setModelColumn(model->fieldIndex("nazev")); mapper = new QDataWidgetMapper(this); mapper->setModel(model); mapper->setItemDelegate(new QSqlRelationalDelegate(this)); mapper->addMapping(ui.lineEditFirmaNazev, model->fieldIndex("nazev")); mapper->addMapping(ui.lineEditFirmaICO, model->fieldIndex("ico")); mapper->addMapping(ui.lineEditFirmaDIC, model->fieldIndex("dic")); mapper->addMapping(ui.lineEditFirmaUlice, relationModel->fieldIndex("ulice")); mapper->addMapping(ui.lineEditFirmaPSC, relationModel->fieldIndex("psc")); mapper->addMapping(ui.lineEditFirmaCP, relationModel->fieldIndex("cislo_popisne"));Není to sice příklad, který jsem popsal, tady se snažím spojit tabulku firma s tabulkou adresa (tzn relace 1:1), ale problém je stejný, protože model->setRelation nahradí sloupec id_adresa v modelu sloupcem ulice v relaci. Nepodařilo se mi spojit celé tabulky.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.