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:
<

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

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



