2012-10-16 61 views
0

我有許多佈局和小部件的應用程序窗口。我也有關閉滾動條Scrollarea。我可以爲scrollareaup和scrollaread創建插槽。但是,當我爲所有應用程序創建wheelEvent時,它僅適用於不在scrollarea中的int應用程序。當我只是試試這個:Qt wheelEvent all

void TContic_win::wheelEvent(QWheelEvent *event) { 
    cout << "-" << endl; 
} 

我不知道如何解決它。我的想法是這樣的:

bool TContic_win::eventFilter(QObject *obj, QEvent *e) { 

    if (isChildOfScrollWidget(obj) { if (e == wheel) scroll Up or Down } 

} 
+0

我多次閱讀您的問題,但無法完全理解它。你只想隱藏滾動條,但仍然可以用鼠標滾輪滾動滾動條嗎? – leemes

回答

0

你可以做這樣的事情(的情況下,如果你的窗口有Your_Scrol_Widget父):

void TContic_win::wheelEvent(QWheelEvent *we) 
{ 
    if (this->childAt(we->pos())->parent() == Your_Scrol_Widget) 
     qDebug() << "-" ; 
} 

你必須有個主意。

+0

這不起作用,因爲當我在mainwindow中有滾動條並且在mainwindow類中使用wheelEvent時。除了scrollarea外,這個事件在任何地方都可以捕獲。 – Lodhart

0

對不起。這是我的錯誤。我有一個錯誤的事件過濾器。我在惡劣的條件下使用'返回true',所以由於這個錯誤,我總是忽略其他事件,而且我的事件過濾器不適用於子項目。順便說一句,謝謝你的努力。