【问题标题】:QScollArea doesn't autoscroll when dragging inside itQScrollArea 在其中拖动时不会自动滚动
【发布时间】:2013-05-09 17:54:03
【问题描述】:

我在QScrollArea 中有一些小部件,我在这些小部件之间拖动,问题是QScrollArea 在里面拖动时不会滚动,所以如果我想在小部件之间拖动A 到小部件 B 并且小部件 B 在视口上不可见,当鼠标移动到视口边缘时,QScrollArea 不会自动滚动。

【问题讨论】:

    标签: qt drag-and-drop qt4 qscrollarea


    【解决方案1】:

    子类化您的滚动区域,并添加以下功能之一。

    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 发生时,检测它在哪个边缘,或者在哪个边缘,然后朝那个方向滚动你的区域。

    希望对您有所帮助。

    【讨论】:

    • 我试图这样做,但后来我发现 QScrollArea 内的小部件的拖动事件没有被 QScrollArea 接收。
    • qt-project.org/doc/qt-4.8/dnd.html 您还需要为您的小部件设置setAcceptDrops(true);qt-project.org/doc/qt-4.8/dnd.html#dropping
    • 现在我正在接收事件,但我也可以放在 QScrollArea 上,这不是我想要的。另外,当我在 QScrollArea 内拖动另一个小部件时,我没有收到 QScrollArea 上的事件.. 但无论如何谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    • 2016-01-23
    • 1970-01-01
    相关资源
    最近更新 更多