Zugriff auf einzelne Zellen
Zugriff auf einzelne Zellen
Hi,
ich bin ein kompletter neuling in sachen Qt und hab mir deswegen eingentlich auch schon ein Buch drüber gekauft. Das Problem ist, dass in dem Buch nichts drin steht über mein Problem:
Ich habe ein QTableWidget das mit per SQL mit daten gefüttert wird. Ich möchte jetzt allerdings auf eine einzelne Zelle zugreifen, die angeklickt wurde und die Daten irgendwie verarbeiten. Allerdings finde ich keine solche Funktion bei der Klasse.
Kann mir da jemand helfen?
danke schonmal,
nicmoe
ich bin ein kompletter neuling in sachen Qt und hab mir deswegen eingentlich auch schon ein Buch drüber gekauft. Das Problem ist, dass in dem Buch nichts drin steht über mein Problem:
Ich habe ein QTableWidget das mit per SQL mit daten gefüttert wird. Ich möchte jetzt allerdings auf eine einzelne Zelle zugreifen, die angeklickt wurde und die Daten irgendwie verarbeiten. Allerdings finde ich keine solche Funktion bei der Klasse.
Kann mir da jemand helfen?
danke schonmal,
nicmoe
Hi,
also, ich kann erfolgreich ein QTableView mit der QSqlTable über setModel() verbinden. Allerdings scheint mit TableView rein auf das Darstellen fixiert zu sein und bietet keine mir ersichtliche Möglichkeit mir das zu liefern was ich brauche.
Allerdings kann das QTableWidget nicht über setModel() mit der QSqlTable verbunden werden, weil der Compiler meckert, dass die Funktion private sei. Was also tun? Die ganzen tollen Signals befinden sich in dieser Klasse und ich kann sie nicht nutzen -.-
cu nicmoe
also, ich kann erfolgreich ein QTableView mit der QSqlTable über setModel() verbinden. Allerdings scheint mit TableView rein auf das Darstellen fixiert zu sein und bietet keine mir ersichtliche Möglichkeit mir das zu liefern was ich brauche.
Allerdings kann das QTableWidget nicht über setModel() mit der QSqlTable verbunden werden, weil der Compiler meckert, dass die Funktion private sei. Was also tun? Die ganzen tollen Signals befinden sich in dieser Klasse und ich kann sie nicht nutzen -.-
cu nicmoe
1+1=0;
@nicmoe
Probier mal das:
Tabelle ableiten von QTableView
// Need to read from row, column to get data from table
QString PBTableView::getStringData(int row, int column) const
{
QModelIndex index = model()->index(row, column);
return model()->data(index, Qt::DisplayRole).toString();
}
int PBTableView::getIntData(int row, int column)
{
QModelIndex index = model()->index(row, column);
return model()->data(index, Qt::DisplayRole).toInt();
}
double PBTableView::getDoubleData(int row, int column)
{
QModelIndex index = model()->index(row, column);
return model()->data(index, Qt::DisplayRole).toDouble();
}
QTableWidget kannst Du nicht mit einem Modell beschicken, denn das hat schon ein eigenes eingebaut, besser ist immer die View/Data Kombination aus QTableView (ableiten) und einem Modell (das die Daten bereitstellt).
Gruß
Peter
Probier mal das:
Tabelle ableiten von QTableView
// Need to read from row, column to get data from table
QString PBTableView::getStringData(int row, int column) const
{
QModelIndex index = model()->index(row, column);
return model()->data(index, Qt::DisplayRole).toString();
}
int PBTableView::getIntData(int row, int column)
{
QModelIndex index = model()->index(row, column);
return model()->data(index, Qt::DisplayRole).toInt();
}
double PBTableView::getDoubleData(int row, int column)
{
QModelIndex index = model()->index(row, column);
return model()->data(index, Qt::DisplayRole).toDouble();
}
QTableWidget kannst Du nicht mit einem Modell beschicken, denn das hat schon ein eigenes eingebaut, besser ist immer die View/Data Kombination aus QTableView (ableiten) und einem Modell (das die Daten bereitstellt).
Gruß
Peter
^^ cool, den kompletten sourcecode von QT kopieren ist wohl um einiges aufwändiger als mal kurz in die examples schauen...
qt-src/examples
da gibts
1) itemviews
2) sql
Schau dir das mal in Ruhe an.
Vor allem das (relational)tablemodel. Doppelklick in die Zelle zum editieren, und noch kurz die passende editStrategy setzen und alles sollte passen.
Das ganze relational Beispiel hat samt main(), Erstellung der Tabelle, Kommentaren und 42 Zeilen Lizenzangaben gerade mal 118 Zeilen Länge. Incl. SQL-Tabelle editieren, und alles mit relationaler DB...
Grüße
Franz
qt-src/examples
da gibts
1) itemviews
2) sql
Schau dir das mal in Ruhe an.
Vor allem das (relational)tablemodel. Doppelklick in die Zelle zum editieren, und noch kurz die passende editStrategy setzen und alles sollte passen.
Das ganze relational Beispiel hat samt main(), Erstellung der Tabelle, Kommentaren und 42 Zeilen Lizenzangaben gerade mal 118 Zeilen Länge. Incl. SQL-Tabelle editieren, und alles mit relationaler DB...
Grüße
Franz
Hi,
also, ich glaube wir reden hier aneinander vorbei...
Was ich brauche ist folgendes: Ich suche nach einer Möglichkeit, die Funktionalität des QTableWidgets mit der SQL-kompatibiltät des QTableView zu vereinen zu einer einzigen super-Klasse. QTableWidget bringt alles mit was ich benötige, alle Signals, Slots und Methoden und ich kann sie einfach nicht nutzen
Warum besitzt QTableView nicht solche Möglichkeiten zur manipulation?
also, ich glaube wir reden hier aneinander vorbei...
Was ich brauche ist folgendes: Ich suche nach einer Möglichkeit, die Funktionalität des QTableWidgets mit der SQL-kompatibiltät des QTableView zu vereinen zu einer einzigen super-Klasse. QTableWidget bringt alles mit was ich benötige, alle Signals, Slots und Methoden und ich kann sie einfach nicht nutzen
Warum besitzt QTableView nicht solche Möglichkeiten zur manipulation?
1+1=0;
Etwas Code wäre sicherlich an dieser Stelle nicht schlecht.
Und wegen den nicht vorhandenen SIGNALS, die QTableView angeblich nicht hat:
QTableView erbt von QAbstractItemView, und das hat sehr wohl SIGNALS, die dir mitteilen, auf welchen QModelIndex geclickt oder sonst was wurde.
Der index wiederum enthält Methoden zum Zugriff auf die Daten.
Wenn das immer noch nicht reicht, brauchen wir wirklich langsam etwas Code mit genauerer Beschreibung, was du wirklich anfangen willst, sonst werden wir weiterhin aneinander vorbei reden.
Grüße
Franz
Und wegen den nicht vorhandenen SIGNALS, die QTableView angeblich nicht hat:
QTableView erbt von QAbstractItemView, und das hat sehr wohl SIGNALS, die dir mitteilen, auf welchen QModelIndex geclickt oder sonst was wurde.
Der index wiederum enthält Methoden zum Zugriff auf die Daten.
Wenn das immer noch nicht reicht, brauchen wir wirklich langsam etwas Code mit genauerer Beschreibung, was du wirklich anfangen willst, sonst werden wir weiterhin aneinander vorbei reden.
Grüße
Franz
Hi,
danke für den Tipp mit dem QAbstractItemView. Ich habe bisher mit Borland C++ RAD Studio gearbeitet und war es deshalb gewöhnt, dass immer alle Methoden einer Klasse aufgelistet werden, ohne dass man sich Gedanken über die Eigenschaften der vererbenden Klassen machen muss.
Ich werde das gleich mal ausprobieren und sehen ob ichs hinkriege
danke für den Tipp mit dem QAbstractItemView. Ich habe bisher mit Borland C++ RAD Studio gearbeitet und war es deshalb gewöhnt, dass immer alle Methoden einer Klasse aufgelistet werden, ohne dass man sich Gedanken über die Eigenschaften der vererbenden Klassen machen muss.
Ich werde das gleich mal ausprobieren und sehen ob ichs hinkriege
1+1=0;