Qt Draggable Icons Example 看看看~

本文通过一个Draggable Icons Example展示了如何在Qt中实现窗体部件间的图像拖放功能。利用QDrag、QMimeData和事件处理函数,实现在同一应用内图片位置的改变以及图片在不同部件间的复制。

Draggable Icons Example例子展示了在同一个应用程序的窗体部件之间如何拖放图像数据。

(关于一些拖放的基本知识在我上一篇博客有介绍。)

例子程序功能是这样的,当我们在一个自定义widget(图中两个相同大小的框框就是自定义的widget)内拖动一个图片,会将图片位置改变。当我们将一个自顶一个widget中的图片拖动放置到另外一个中时,将会复制图到另外一边。


首先看main.cpp:

#include <QApplication>

#include <QHBoxLayout>

#include "dragwidget.h"

int main(int argc, char *argv[])

{

   Q_INIT_RESOURCE(draggableicons);

   QApplication app(argc, argv);

   QWidget mainWidget;

   QHBoxLayout *horizontalLayout = new QHBoxLayout;

   horizontalLayout->addWidget(new DragWidget);

   horizontalLayout->addWidget(new DragWidget);

   mainWidget.setLayout(horizontalLayout);

   mainWidget.setWindowTitle(QObject::tr("Draggable Icons"));

#ifdef Q_OS_SYMBIAN

   mainWidget.showMaximized();

#else

   mainWidget.show();

#endif

   return app.exec();

}

Q_INIT_RESOURCE是一个初始化资源的函数,在一些平台,我们的资源文件.qrc需要存储在静态库,使用它将自动为我们导入资源文件,这就确保资源能够在启动时被初始化。

然后就是主程序类对象,然后实例化一个QWidget作为主窗口,再实例化两个自定义widget,用QHBoxLayout排版与呈现。#ifdef Q_OS_SYMBIAN ...可以不用管也可以去掉,这是用在塞班系统里的显示。

下面进入自定义的这个部件代码,看看它怎么样写的。

#include <QFrame>

QT_BEGIN_NAMESPACE

class QDragEnterEvent;

class QDropEvent;

QT_END_NAMESPACE

class DragWidget : public QFrame

{

public:

   DragWidget(QWidget *parent=0);

protected:

   <

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值