Meine Klasse SuperTable
erbt von QTableView
, die wiederum von QAbstractItemView
erbt.Steckplatz von der übergeordneten Klasse trennen QAbstractItemView
An einem bestimmten Punkt gibt die QTableView
QScrollBar
ein Signal aus, das den QAbstractItemView::verticalScrollbarValueChanged(int)
-Steckplatz auslöst.
Für meine Anwendung ist es wichtig, dass dies nicht geschieht, also möchte ich diesen Steckplatz in QAbstractItemView
trennen, aber ich war nicht in der Lage, einen Weg zu finden, um Zugriff darauf von SuperTable
zu erhalten.
bearbeiten/
Was ich versuche zu erreichen: die Daten der Tabelle Modell ist nicht mehr verfügbar, aber ich will den Dialog halten mit dem QTableView und die Daten, die es bereits enthält, zur Verfügung. Aber ich kann nicht seine data()
Methode aufgerufen werden, weil ich nichts mehr zurückgeben muss. Zum größten Teil, ich habe dies erreicht, mit einer großen Ausnahme: Immer, wenn die Tabelle mit der Maus über die Zellen gescrollt wird, geschieht Folgendes:
myApp :: :: Daten von über- und (QModelIndex const & , int) const
QSortFilterProxyModel :: data (QModelIndex const &, int) const
QAbstractItemViewPrivate :: checkMouseMove (QPersistentModelIndex const &) QAbstractItemView :: verticalScrollbarValueChanged (int)
QMetaObject :: activate (QObject *, QMetaObject const * , int, void **)
QAbstractSlider :: valuechanged (int)
bearbeiten/
Insbesondere bei Qt-Implementierung von qabstractitemview.cpp spähen, ist dies die Verbindung I trennen möchten:
void QAbstractItemViewPrivate::init()
{
// (...)
QObject::connect(vbar, SIGNAL(valueChanged(int)),
q, SLOT(verticalScrollbarValueChanged(int)));
// (...)
}
Da es auf der privaten Seite der Dinge ist, unsicher, ob das überhaupt möglich ist. Gibt es einen Weg?
Sie haben Ihre Frage in einem klassischen XY-Problem formuliert: Sie setzen voraus, dass eine Lösung, die Sie deutlich sehen, nicht funktioniert. Stattdessen sollten Sie sich fragen, wie Sie Ihr ursprüngliches Problem lösen können - nämlich wie die Daten für eine Ansicht zwischengespeichert werden, wenn die Daten des Quellmodells verschwunden sind. Es sieht so aus, als hättest du viele Dinge implementiert, während du der falschen Lösung nachjagst. Bearbeiten Sie die Frage, um sich auf das ursprüngliche Problem zu konzentrieren: Erläutern Sie, wie das Quellmodell beispielsweise seine Daten verliert. Erwähnen Sie nur Ihre vorgeschlagene Lösung und ihre Probleme als Nebensache. –
Ich hatte es nicht bemerkt - danke, dass du das gebracht hast. – jehuty