Qt:支持鼠标拖动来移动内容的窗口

本文介绍了如何在Qt中创建一个窗口,使得其内容支持鼠标拖动移动。通过派生QScrollArea并安装事件过滤器,处理鼠标移动和释放事件,实现在窗口内按住鼠标左键拖动时,内容跟随移动。遇到控件抢占鼠标事件的问题,通过在控件事件中调用event->ignore(),确保事件最终能传递到MyScrollArea,从而保证功能的正常运行。
摘要由CSDN通过智能技术生成

最近有个Qt的项目碰到问题,问题是这样的:

要使Qt的窗口内容支持drag移动,即按住鼠标左键在窗口里移动时,窗口的滚动条和内容随着鼠标的移动而移动。

实现的方法实现一个类,此类派生自QScrollArea,安装事件过滤器,对鼠标的事件进行处理来实现内容的移动。

代码如下:

头文件

#include 

<QScrollArea> <QPoint>

class

{

MyScrollArea : public QScrollArea

这样就可以使用这个类来做窗口的parent,这样里面的内容就支持拖动了。

Q_OBJECT

public:

QWidget * parent =NULL );

     MyScrollArea(

    ~MyScrollArea(){};

protected

:

    bool eventFilter(QObject *obj, QEvent *evt);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值