Мой класс SuperTable
наследует от QTableView
, который, в свою очередь, наследует от QAbstractItemView
.Отключить слот от родительского класса QAbstractItemView
В какой-то момент QTableView
's QScrollBar
испускает сигнал, который запускает слот QAbstractItemView::verticalScrollbarValueChanged(int)
.
Для моего приложения важно, чтобы этого не произошло, поэтому я хотел бы отключить этот слот в QAbstractItemView
, но я не смог найти способ получить к нему доступ от SuperTable
.
редактировать/
То, что я пытаюсь, чтобы достичь: данные модели таблицы является больше не доступны, но я хочу, чтобы диалог с QTableView и данные, которые он уже содержит, доступный. Но я не могу назвать его метод data()
, потому что мне больше нечего возвращать. По большей части, я достиг этого, с одним большим исключением: всякий раз, когда таблица прокручиваются с помощью мыши над клетками, происходит следующее:
MYAPP :: надтаблица :: данные (QModelIndex сопзИте & , целое) Const
QSortFilterProxyModel :: данные (QModelIndex Const &, внутр) константные
QAbstractItemViewPrivate :: checkMouseMove (QPersistentModelIndex Const &) QAbstractItemView :: verticalScrollbarValueChanged (интермедиат)
QMetaObject :: Activate (QObject *, QMetaObject сопз * , int, void **)
QAbstractSlider :: ValueChanged (интермедиат)
/редактировать
Более конкретно, выглядывая на реализацию Qt о qabstractitemview.cpp, это соединение, я хотел бы отключить:
void QAbstractItemViewPrivate::init()
{
// (...)
QObject::connect(vbar, SIGNAL(valueChanged(int)),
q, SLOT(verticalScrollbarValueChanged(int)));
// (...)
}
Поскольку он находится на частной стороне вещей, не уверен, возможно ли это. Есть ли способ?
Вы сформулировали свой вопрос по классической проблеме XY: вы предполагаете, что решение, которое вы четко видите, не будет работать. Вместо этого вы должны спросить, как решить свою первоначальную проблему - а именно, как кэшировать данные для представления, когда данные исходной модели исчезли. Похоже, что вы реализовали много вещей, преследуя неправильное решение. Пожалуйста, отредактируйте вопрос, чтобы сосредоточиться на исходной проблеме: объясните, как исходная модель теряет свои данные, например. Только упоминайте о своем предлагаемом решении и его бедах в стороне. –
Я не понял - спасибо, что придумал это. – jehuty