Portál AbcLinuxu, 3. listopadu 2025 02:37
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.