QPushButton in einem QTableView
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
QPushButton in einem QTableView
Hallo habe habe folgendes vor,
in einem QTableView, soll in einer Spalte ein QPushButton erscheinen.
Hierzu habe ich dem View auf der passenden Spalte ein Delegate verpasst.
Nur habe ich folgende Probleme:
- der QPushButton wird nur bei einem Doppelklick angezeigt.(er soll immer sichtbar sein)
- Wenn der QPushButton gedrückt wird, brauche ich eine Referenz zum Datenmodell??
Ich habe in der Doku openPersistentEditor gefunden, nur leider ist die Anzahl der Zeilen Dynamisch, so das man nicht einfach eine Schleife durchlaufen lassen kann. Genauer gesagt soll man mit dem QPushButton die Zeile löschen können in der er sich befindet.
Hat jemand ein paar Ideen hierfür?
in einem QTableView, soll in einer Spalte ein QPushButton erscheinen.
Hierzu habe ich dem View auf der passenden Spalte ein Delegate verpasst.
Nur habe ich folgende Probleme:
- der QPushButton wird nur bei einem Doppelklick angezeigt.(er soll immer sichtbar sein)
- Wenn der QPushButton gedrückt wird, brauche ich eine Referenz zum Datenmodell??
Ich habe in der Doku openPersistentEditor gefunden, nur leider ist die Anzahl der Zeilen Dynamisch, so das man nicht einfach eine Schleife durchlaufen lassen kann. Genauer gesagt soll man mit dem QPushButton die Zeile löschen können in der er sich befindet.
Hat jemand ein paar Ideen hierfür?
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
Sieh die mal die Dokumentation von QAbstractItemDelegate an. Was dort mit einer ProgressBar gezeigt wird, müsstes du mit dem Button (QStyleOptionButton) machen.
Über createEditor kannst du dann z.B. einen Dialog anzeigen.
Nur mit der Anzeige des Button-Srtatus, Sunken oder Raised, kann ich nicht weiterhelfen, habe ich auch noch nicht hinbekommen.
Über createEditor kannst du dann z.B. einen Dialog anzeigen.
Nur mit der Anzeige des Button-Srtatus, Sunken oder Raised, kann ich nicht weiterhelfen, habe ich auch noch nicht hinbekommen.
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
Genau die Paint Methode musste noch überschrieben werden:)
damit geht das ganz gut.
Das erzeugt ein normalen PushButton.
Die Übergabe an das Modell wurde wie folgt gelöst::
jetzt muss ich das nur noch hinbekommen, das man da einfach drauf klicken kann. Bisher muss man erst mal ein Doppelkick machen um den Editor zu aktivieren.
damit geht das ganz gut.
Code: Alles auswählen
QStyleOptionButton sf;
sf.rect=option.rect;
sf.features=QStyleOptionButton::None;
sf.text=trUtf8("löschen");
sf.state=QStyle::State_Enabled|QStyle::State_Raised;
QApplication::style()->drawControl(QStyle::CE_PushButton,&sf,maler);
Die Übergabe an das Modell wurde wie folgt gelöst::
Code: Alles auswählen
Der Slot in den gehüpft wird, wenn jemand daraufklickt:
QPushButton *sf=qobject_cast<QPushButton *>(sender());
sf->setProperty("weg",true);
emit commitData(sf);
emit closeEditor(sf);
setModelData:
QPushButton *sf = static_cast<QPushButton*>(editor);
modell->setData(index,sf->property("weg"));
DesalbBartSimpson hat geschrieben:Der hilft ja nicht wirklich weiter, da man nicht an die einzelnen Zellen kommt um dort die Schaltfläche zu platzieren.
hatte ich den Gedanken, dass du anstatt eine extra Zelle für den PushButton reservierst, ein kleines Icon in die verticalHeaderView legst.BartSimpson hat geschrieben:Genauer gesagt soll man mit dem QPushButton die Zeile löschen können in der er sich befindet.
Aber wenn es jetzt eh funktioniert, ist es ja OK
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
Hast du schon mal probiert, ob man damit Mouse-Press/Release-Events empfangen kann?
Code: Alles auswählen
bool QAbstractItemDelegate::editorEvent ( QEvent * event, QAbstractItemModel * model, const QStyleOptionViewItem & option, const QModelIndex & index )