QComboBox ( Model ) index bestimmen
-
- Beiträge: 39
- Registriert: 14. Oktober 2008 19:50
QComboBox ( Model ) index bestimmen
mein problem ist folgendes, ich habe eine ComboBox die sich seine items von einem model->relationalModel(x) besorgt und ich will die aktuelle auswahl der box selber bestimmen, habe aber nur den modelIndex des model.
kann mir ja jemmand vll helfen ?
kann mir ja jemmand vll helfen ?
-
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
- Beiträge: 39
- Registriert: 14. Oktober 2008 19:50
Und wieso geht folgendes nicht?
Ich meine die Frage ernst, da du das sicherlich in betracht gezogen - oder wegen irgendetwas eh verworfen hast .
Code: Alles auswählen
QComboBox::setCurrentIndex(QModelIndex::row());
-
- Beiträge: 39
- Registriert: 14. Oktober 2008 19:50
habe ich versucht aber über die row() bekomme ich das flasche zurück.
hier zb:
*model
(0) (1) (2)
id | name | klasse
0 bla 2 (relation) <- habe z.B. diesen Index
1 bl. 1 (relation)
und in der comboBox ist:
comboBox->setModel(model->relationModel(2));
und wie bekomme ich den aktuellen index der relation...
hier zb:
*model
(0) (1) (2)
id | name | klasse
0 bla 2 (relation) <- habe z.B. diesen Index
1 bl. 1 (relation)
und in der comboBox ist:
comboBox->setModel(model->relationModel(2));
und wie bekomme ich den aktuellen index der relation...
Achso ok, ich habe dich missverstanden. Ich habe bei modelIndex an QModelIndex gedacht, dabei beziehst du dich auf die Übergabe für relationModel.
Ich interpretiere in deinen jetztigen Post wieder etwas völlig anderes rein, als in deinen Ersten. Ich kann dich nicht verstehen, was aber auch daran liegen könnte, dass ich mit SQL in Qt bisher nichts gemacht habe, deswegen lass ich dir lieber von anderen helfen.
Ich interpretiere in deinen jetztigen Post wieder etwas völlig anderes rein, als in deinen Ersten. Ich kann dich nicht verstehen, was aber auch daran liegen könnte, dass ich mit SQL in Qt bisher nichts gemacht habe, deswegen lass ich dir lieber von anderen helfen.
-
- Beiträge: 39
- Registriert: 14. Oktober 2008 19:50
Code: Alles auswählen
model->setTable("pupils");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->setHeaderData(0, Qt::Horizontal, tr("ID"));
model->setHeaderData(1, Qt::Horizontal, tr("Name"));
model->setHeaderData(2, Qt::Horizontal, tr("Klasse"));
model->setHeaderData(3, Qt::Horizontal, tr("Geburtstag"));
model->setRelation(2, QSqlRelation("classes", "id", "name"));
model->select();
m_ui->cBEditClass->setModel(model->relationModel(2));
m_ui->cBEditClass->setModelColumn(1);
Denn mit currentIndex.row() bekomme ich einen falschen zurück, da ein Schüler der in der Klasse A mit id 2 -> in der Box die Klasse B mit 3 angezeigt wird, das Problem ist die Datensätze lassen sich nur an den id's unterscheiden weil die Namen auch öfters vorkommen dürfen. Bei mir in der Datenbank hat jeder Schüler seine eigene id die dann mit einer Klassen id veknüpft ist.
Und mein zweites problem ist zurzeit wie kann ich auf diese Spalte zugreifein ohne die eingesetze Relation zu bekommen z.B.
id | name | class
1 bla 2
ist bei mir im TreeView
id | name | class
1 bla Klasse 2...
und in diesen fall komme ich nicht mehr an die '2' über das model ich bekomme nur die Relation auf den Datensatz mit der id 2 in dem fall 'Klasse 2...', gibt es da ne möglichkeit irgendwie diesen Spaltenwert ohne die Relation zu erhalten ?
Was willst du denn genau machen? Evtl solltest du dir nen Filter setzen (z.B. nach Klasse oder Geburtsjahr der Person)
im Moment hast du ja ein Statement a la ohne where Klausel. Du könntest ja zB die Schüler gruppieren anhand der Klassen oder Filter zwecks Geburtsjahr setzen.
Oder die ges. DB Struktu anpassen allerding fehlen mir dazu mehr Infos was du genau abbilden möchtest
im Moment hast du ja ein Statement a la
Code: Alles auswählen
"Select * from T_Tabelle"
Oder die ges. DB Struktu anpassen allerding fehlen mir dazu mehr Infos was du genau abbilden möchtest
-
- Beiträge: 39
- Registriert: 14. Oktober 2008 19:50
-
- Beiträge: 39
- Registriert: 14. Oktober 2008 19:50
und gehts über
Da hättest wieder das doppeldeutigenamensproblem-was aber Latte ist (oder) denn wenn die namen Doppeldeutigsein dürfen ist es doch egal ob/ welcher es ist?!
Code: Alles auswählen
ui.comboBox->setCurrentIndex(ui.comboBox->findText("bla"));
-
- Beiträge: 39
- Registriert: 14. Oktober 2008 19:50
das ist zwar möglich aber das mit den doppeltnamen ist ein problem den die datensätze sind mit id's verknüpft und wen der datensatz zb. ubennant wird das ist die person zb in einer anderen klasse aber trozdem danke.
// edit
habe jetzt dafür gesorgt das die datensätze nicht mehr die selben namen haben dürfen, somit ist das jetzt auch so ok
// edit
habe jetzt dafür gesorgt das die datensätze nicht mehr die selben namen haben dürfen, somit ist das jetzt auch so ok