Мне нужно подключить некоторые простые функции фильтра, щелкнув мышью на элементе заголовка QTreeView. Достаточно просто, я реализовал функцию слота, который подключается к:Ошибка отслеживания мыши QHeaderView
QTreeView::header()->sectionClicked(int)
После установки
QTreeView::header()->setSectionsClickable(true)
, sectionClicked
излучается в любое время, когда я нажимаю на заголовке, который подсвечивается парение по умолчанию эффект, создаваемый любым кликабельным заголовком.
Проблема заключается в том, что зависание над некоторыми областями в кликабельных заголовках не будет распознано. Следовательно, в этих частях нет подсветки, и я не получаю никаких триггеров sectionClicked
. Я проследил его еще дальше и получил свой собственный класс от QHeaderView
и поставил некоторый вывод в mouseMoveEvent
.
class MyHeaderView : public QHeaderView
{
Q_OBJECT
public:
MyHeaderView(QWidget* parent = 0)
: QHeaderView(Qt::Horizontal, parent)
{
setMouseTracking(true);
}
protected:
virtual void mouseMoveEvent(QMouseEvent* event)
{
qDebug() << event->pos();
}
};
При выходе всех QTreeView
настройки, как они были, я установил экземпляр этого класса, чтобы быть заголовком через
QTreeView::setHeader(QHeaderView*)
я мог видеть, что во всех областях были парения эффект потерпела неудачу , Я не получил вывод отладки, который вы можете увидеть в переопределенном mouseMoveEvent
.
В результате я предполагаю, что отслеживание мыши работает неправильно.
Общее применение, над которым я работаю, очень тихий, поэтому я создал отдельный пример, для всего этого. К моему удивлению, все работает так, как ожидалось. Я не знаю, как я должен это делать. Может ли кто-нибудь подумать о причинах, по которым отслеживание мыши не удается выполнить в некоторых частях виджета? Может быть, проблема с частотой кадров связана с отсутствием производительности? Существуют ли настройки на виджетах, которые влияют на общую область отслеживания мыши? Могут ли родительские виджеты влиять на отслеживание мыши?