最近有个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);
private
:
本文介绍了如何在Qt中创建一个窗口,使得其内容支持鼠标拖动移动。通过派生QScrollArea并安装事件过滤器,处理鼠标移动和释放事件,实现在窗口内按住鼠标左键拖动时,内容跟随移动。遇到控件抢占鼠标事件的问题,通过在控件事件中调用event->ignore(),确保事件最终能传递到MyScrollArea,从而保证功能的正常运行。
最低0.47元/天 解锁文章
1750

被折叠的 条评论
为什么被折叠?



