Seite 1 von 1

QTableWidget mit ScrollBar

Verfasst: 22. Februar 2014 18:02
von GBunge
Hallo,

für die Darstellung einer großen Anzahl Daten benutze ich
ein QTableWidget, bei dem die vertikale ScrollBar automatisch
auftaucht, wenn die Datenmenge die Größe des Frames übersteigt.
Um die Position der ScrollBar auszulesen, brauchte ich einen
Zeiger auf diese ScrollBar, damit ich ein Signal empfangen kann.

Mein Problem besteht nun darin, daß ich nicht weiß wie ich
an diesen Zeiger komme.
Gibt es eine Möglichkeit diesen Zeiger zu erhalten?

Gruss GBunge

Re: QTableWidget mit ScrollBar

Verfasst: 22. Februar 2014 19:13
von sigvdr
QScrollBar * horizontalScrollBar () const
QScrollBar * verticalScrollBar () const

Re: QTableWidget mit ScrollBar

Verfasst: 22. Februar 2014 22:43
von GBunge
Das habe ich schon versucht.
Es funktioniert nicht!
Ich habe das Signal 'selectionChanged()' connected!
Aber es kommt keine Reaktion auf meinen Versuch ein Item auszuwählen.
Auszug aus meinem Code:

[color=#8000FF]
MyTable::MyTable(QWidget *p, QString s ) : QTableWidget(p)
{ ...
selMod = new QItemSelectionModel( model());
connect( selMod, SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
this,SLOT(selection(QItemSelection,QItemSelection)));
...
}

void MyTable::selection( QItemSelection a, QItemSelection b)
{
qDebug()<<a;
}
[/color]

Re: QTableWidget mit ScrollBar

Verfasst: 23. Februar 2014 08:46
von sigvdr
Oben frägst du nach ScrollBar und im 2. Post bringst du ein Beispiel mit QItemSelectionModel??

Wobei mir am Beispiel nichs falsches auffällt außer dass du mal testen kannst ob der Slot aufgerufen wird.

Code: Alles auswählen

qDebud() << a;
qDebug( "Slot geht");
zur Ergänzung noch den Hinweis:
If you include <QtDebug>, a more convenient syntax is also available:
Gruß Sig

Re: QTableWidget mit ScrollBar

Verfasst: 23. Februar 2014 09:10
von sigvdr
Erwartest du etwa, dass sich die Selection ändert, wenn du die Tabelle mit dem ScrollBar verschiebst?
Gruß Sig

Re: QTableWidget mit ScrollBar

Verfasst: 24. Februar 2014 18:08
von GBunge
Hallo Sig,
die Verwechselung ist meine Schuld.
Im ersten Post spreche ich von der automatisch erscheinenden ScrollBar bei einer
größeren Menge Daten. Da diese ScrollBar automatisch erscheint, bekomme ich keinen
Zeiger auf sie.
Dein erster Hinweis
[quote="sigvdr"]
QScrollBar * horizontalScrollBar () const
QScrollBar * verticalScrollBar () const
[/quote]
war genau das, was ich auch als erstes versucht habe.

Dabei wurde die Verbindung zum SLOT aber nicht hergestellt.
Eine Ausgabe mit 'qDebug()<<"bin drin";' hatte keinen Erfolg.
Also dachte ich mir, versuch es mal mit einem
'QItemSelectionModel', weil das QItemSelectionModel
das erforderliche Signal zur Verfügung stellt.
Der Code den Du angesehen hast bezog sich genau auf diesen Versuch.

Nun, auch das hat nicht geklappt. Es kommt offensichtlich
kein Signal in meinem SLOT an.
Gruss GBunge

Re: QTableWidget mit ScrollBar

Verfasst: 25. Februar 2014 10:39
von MichaelS
Was spricht gegen die von QTableWidget bereitgestellten Signale?

Code: Alles auswählen

void	itemSelectionChanged()

Code: Alles auswählen

void currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)

Code: Alles auswählen

void	currentItemChanged(QTableWidgetItem * current, QTableWidgetItem * previous)
Damit kannst Du Dir Deine ganzen Verrenkungen sparen.

Gruß Michael

Re: QTableWidget mit ScrollBar

Verfasst: 28. Februar 2014 12:45
von GBunge
Hallo Michael,
leider helfen mir Deine Hinweise nicht weiter.
Ich muss mit einem QTableView und QStandardModel arbeiten.
Das TableView stellt diese Signale nicht zur Verfügung.
Gruß GBunge