最近有个Qt的项目碰到问题,问题是这样的:
要使Qt的窗口内容支持drag移动,即按住鼠标左键在窗口里移动时,窗口的滚动条和内容随着鼠标的移动而移动。
实现的方法实现一个类,此类派生自QScrollArea,安装事件过滤器,对鼠标的事件进行处理来实现内容的移动。
代码如下:
头文件
#include
class
{MyScrollArea:publicQScrollArea
这样就可以使用这个类来做窗口的parent,这样里面的内容就支持拖动了。
Q_OBJECTpublic:QWidget* parent =NULL);
MyScrollArea(
~MyScrollArea(){};
protected:
bool eventFilter(QObject*obj,QEvent*evt);
private:boolmMoveStart;boolmContinousMove;QPointmMousePoint;
};
cpp文件
#include
#include
#include "myscrollarea.h"
MyScrollArea::MyScrollArea(QWidget* parent)
: QScrollArea(parent)
,mMoveStart(false)
{
installEventFilter(this);}
bool MSCScrollArea::eventFilter(QObject*obj,QEvent*evt)
{