QTableWidget + ComboBox, über Button ansprechen
Verfasst: 17. Oktober 2006 15:10
Hallo.
Folgendes Problemchen:
In einem QTableWidget füge ich in eine bestimmte Spalte readable Dokumente ein. Für jede Zeile ist die Anzahl der Files variabel.
Wenn nur ein File zum Lesen da war, dann befindet sich in der besagten Spalte und einer bestimmten Reihe nur ein Element (QTableWidgetItem).
Wenn mehrere -> adde ich an der Stelle eine QComboBox in die Zelle und bringe in dieser die Files unter. Der Code dazu:
Nun möchte ich die Elemente in den ComboBoxen über einen Button ansprechen.
Das heisst, wenn ich auf den Button clicke (Signal), wird das aktuell ausgewählte
Element in der ComboBox ausgewertet. In dem entsprechenden SLOT starte ich das File mit dem dazugehörigen Programm. (txt, pdf usw.)
Compilerfehler:
ASSERT: "index.isValid()" in file itemviews\qabstractitemview.cpp, line 1993
Was mache ich falsch? So bin ich vorgegangen:
Folgendes Problemchen:
In einem QTableWidget füge ich in eine bestimmte Spalte readable Dokumente ein. Für jede Zeile ist die Anzahl der Files variabel.
Wenn nur ein File zum Lesen da war, dann befindet sich in der besagten Spalte und einer bestimmten Reihe nur ein Element (QTableWidgetItem).
Wenn mehrere -> adde ich an der Stelle eine QComboBox in die Zelle und bringe in dieser die Files unter. Der Code dazu:
Code: Alles auswählen
QComboBox *box = new QComboBox(0);
QAbstractItemModel *model=box->model();
Programmliste->setCellWidget (row, 1, box);
model->insertRow(0);
model->setData(model->index(0, 0), QIcon (path), Qt::DecorationRole);
model->setData(model->index(0, 0), value);
model->setData(model->index(0, 0), value, Qt::ToolTipRole);
Das heisst, wenn ich auf den Button clicke (Signal), wird das aktuell ausgewählte
Element in der ComboBox ausgewertet. In dem entsprechenden SLOT starte ich das File mit dem dazugehörigen Programm. (txt, pdf usw.)
Compilerfehler:
ASSERT: "index.isValid()" in file itemviews\qabstractitemview.cpp, line 1993
Was mache ich falsch? So bin ich vorgegangen:
Code: Alles auswählen
SLOT->
void Installer::openChosenFile()
{
int column = Programmliste->currentColumn();
int row = Programmliste->currentRow();
if(Programmliste->cellWidget(row, column) != 0)
{// Eine ComboBox ausgewählt
QComboBox *combo = static_cast<QComboBox*>(Programmliste->cellWidget(row, column));
QString temp = combo->currentText();
QDir::convertSeparators (temp);
openExternFile(temp);
}