我需要連接一些簡單的過濾功能,鼠標點擊QTreeView標題項。很簡單,我實現了一個連接到槽函數:QHeaderView鼠標跟蹤失敗
QTreeView::header()->sectionClicked(int)
設置
QTreeView::header()->setSectionsClickable(true)
後,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
中看到。
因此,我假設鼠標跟蹤無法正常工作。
我正在使用的整體應用程序很安靜,所以我爲此設置了一個獨立的示例。令我驚訝的是,一切都按預期工作。我無能爲力,我應該如何繼續這樣做。任何人都可以想到鼠標跟蹤在widget的某些部分失敗的原因嗎?它可能是一個幀率問題與缺乏表現?是否存在影響整個鼠標跟蹤區域的小部件設置?家長小部件可以影響鼠標跟蹤嗎?