[gelöst] Nach Button-Klick Zeile aus QTableView auslesen
[gelöst] Nach Button-Klick Zeile aus QTableView auslesen
Hi,
ich habe ein TableView, indem die ersten Werte "normale" Textfelder sind, und das letzte einen Button enthält (per delegate). Nun möchte ich gerne die Werte der Zeile auslesen, wenn ich auf den Button klicke.
Ein Klick auf den Button löst ein Signal aus, welche eine Funktion aufruft, die diese Daten nun weiterverwenden soll.
Könnt Ihr mir sagen, wie ich an die Zelleninhalte (wie gesagt nur aus der Zeile, in der der Button ist) herankomme?
MfG, und vielen Dank im Voraus, Ozzy
ich habe ein TableView, indem die ersten Werte "normale" Textfelder sind, und das letzte einen Button enthält (per delegate). Nun möchte ich gerne die Werte der Zeile auslesen, wenn ich auf den Button klicke.
Ein Klick auf den Button löst ein Signal aus, welche eine Funktion aufruft, die diese Daten nun weiterverwenden soll.
Könnt Ihr mir sagen, wie ich an die Zelleninhalte (wie gesagt nur aus der Zeile, in der der Button ist) herankomme?
MfG, und vielen Dank im Voraus, Ozzy
Zuletzt geändert von Ozzy am 12. November 2007 14:07, insgesamt 1-mal geändert.
Ohne deinen Code zu kennen, kann ich nur raten...
Code: Alles auswählen
tableView->currentIndex().row()Moin, das geht wohl leider nicht so.
Hier mal was von meinem Code:
Und da kann ich doch nicht so einfach auf mein TableView zurückgreifen...
Hier mal was von meinem Code:
Code: Alles auswählen
QWidget *ButtonDelegate::createEditor( QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index ) const {
if (index.column() == 4) {
QPushButton *button = new QPushButton( "Edit Parameter", parent );
connect( button, SIGNAL( clicked() ), this, SLOT( buttonclicked() ) );
return button;
}
else return QItemDelegate::createEditor( parent, option, index );
}
void ComboBoxDelegate::buttonclicked() {
Dialog dialog;
dialog.setValue( Hier möchte ich die Daten übergeben );
dialog.exec();
}
Hi,
also ich komme echt nicht weiter, ich habe echt keine Ahnung, wie ich an den Zeileninhalt herankommen kann, oder auch an die Zeilennummer, also aus dem Slot heraus...
Habt Ihr da nicht eine Idee für mich?
Also ich habe es mit:
probiert, aber da bekomme ich immer nur:
QModelIndex(-1,-1,0x0,QObject(0x0) )
heraus.
Bin echt langsam am verzweifeln...
Nachtrag: also ich habe jetzt schon mal herausgefunden, dass wenn ich eine Zelle markiere, und dann auf den Button klicke, ich auch Infos zu der zelle bekomme. Aber warum setzt er nicht selber einen "Focus" auf die Zelle, in der der Button ist? Oder wie macht man so etwas?
MfG, Ozzy
also ich komme echt nicht weiter, ich habe echt keine Ahnung, wie ich an den Zeileninhalt herankommen kann, oder auch an die Zeilennummer, also aus dem Slot heraus...
Habt Ihr da nicht eine Idee für mich?
Also ich habe es mit:
Code: Alles auswählen
QPushButton *button_sender = qobject_cast<QPushButton*>(sender());
QTableView *table = qobject_cast<QTableView*>( button_sender->parent()->parent() );
qDebug() << table->currentIndex();
QModelIndex(-1,-1,0x0,QObject(0x0) )
heraus.
Bin echt langsam am verzweifeln...
Nachtrag: also ich habe jetzt schon mal herausgefunden, dass wenn ich eine Zelle markiere, und dann auf den Button klicke, ich auch Infos zu der zelle bekomme. Aber warum setzt er nicht selber einen "Focus" auf die Zelle, in der der Button ist? Oder wie macht man so etwas?
MfG, Ozzy
Ok, hatte nur die Hälfte gelesen.
Also, du setz per Delegate ein QPushButton in die Zelle rein. D.h. du machst einen Doppelklick auf die Zelle, dann erscheint der QPushButton, dann machst du einen Klick auf den Button. Sehr Benutzerfreundlich...
Du könntest von QPushButton ableiten, und der Ableitung das Model und die Zelle mitteilen und den Dialog dann vom abgeleiteten QPushButton aufrufen.
Du könntest aber auch den Button im paint-Event mittels der QStyle-Funktionen zeichnen und dann den Button-Click mittels QAbstractItemDelegate::editorEvent abfangen.
Also, du setz per Delegate ein QPushButton in die Zelle rein. D.h. du machst einen Doppelklick auf die Zelle, dann erscheint der QPushButton, dann machst du einen Klick auf den Button. Sehr Benutzerfreundlich...
Du könntest von QPushButton ableiten, und der Ableitung das Model und die Zelle mitteilen und den Dialog dann vom abgeleiteten QPushButton aufrufen.
Du könntest aber auch den Button im paint-Event mittels der QStyle-Funktionen zeichnen und dann den Button-Click mittels QAbstractItemDelegate::editorEvent abfangen.
Hi,
nein, also man muss keinen Doppelklick drauf machen, dafür habe ich ein
tableView->openPersistentEditor( model->index(row, column, QModelIndex()) );
Also ohne Doppelklick in der Zelle gleich ein Klick auf den Button...
Aber mit den anderen Sachen konnte ich Dir noch ganz folgen. Du meinst also, mit der SIGNAL/SLOT-Methode ist das nicht so gut???
MfG, Ozzy
nein, also man muss keinen Doppelklick drauf machen, dafür habe ich ein
tableView->openPersistentEditor( model->index(row, column, QModelIndex()) );
Also ohne Doppelklick in der Zelle gleich ein Klick auf den Button...
Aber mit den anderen Sachen konnte ich Dir noch ganz folgen. Du meinst also, mit der SIGNAL/SLOT-Methode ist das nicht so gut???
MfG, Ozzy