2013-05-09 52 views
1

我在QScrollArea內部有一些小部件,並且我在這些小部件之間拖動,問題在於當我將其拖入內部時,QScrollArea不滾動,所以如果我想要要在窗口小部件A與窗口小部件B之間進行拖動,並且窗口小部件B在視口上不可見,則當鼠標移動到視口邊緣時,QScrollArea不會自動滾動。QScollArea在其內部拖動時不會自動滾動

回答

2

子類化您的滾動區域,並添加下列功能之一。

http://qt-project.org/doc/qt-4.8/qwidget.html#mousePressEvent

http://qt-project.org/doc/qt-4.8/qwidget.html#dragMoveEvent

http://qt-project.org/doc/qt-4.8/qwidget.html#dragLeaveEvent //可能只需要這一個

dragMoveEvent到達你的部件的邊緣,或當dragLeaveEvent情況,發現它是邊緣,或左在,然後在該方向上滾動您的區域。

希望有所幫助。

+0

我試圖做到這一點,但後來我發現QScrollArea沒有收到來自QScrollArea內的小部件的拖動事件。 – Tarantula 2013-05-10 01:33:25

+0

http://qt-project.org/doc/qt-4.8/dnd.html您還需要爲您的小部件設置 'setAcceptDrops(true);'。 http://qt-project.org/doc/qt-4.8/dnd.html#dropping – phyatt 2013-05-10 02:27:35

+0

現在我收到了這些事件,但我也可以放在QScrollArea上,這不是我想要的。另外,當我拖動Q​​ScrollArea內的另一個小部件時,我沒有收到QScrollArea上的事件..不過謝謝! – Tarantula 2013-05-10 12:14:24

相關問題