我在程序中设置了拖拽生效的时间和距离,但是没有反应,而且好像也不是默认的500毫秒和4个象素,
每当我鼠标在按钮是按下拖拽就马上生效了,请教要如何生置才能让拖拽的时间和距离改变。
代码如下:
头文件QDrapButton.h
#ifndef QDRAPBUTTON_H
#define QDRAPBUTTON_H
#include <QPushButton>
QT_BEGIN_NAMESPACE
class QDragEnterEvent;
class QDragMoveEvent;
QT_END_NAMESPACE
class QDrapButton : public QPushButton
{
public:
QDrapButton(QWidget *parent);
protected:
void mousePressEvent(QMouseEvent *event);
private:
};
#endif
CPP文件QDrapButton.cpp
#include <QtGui>
#include "QDrapButton.h"
QDrapButton::QDrapButton(QWidget *parent)
: QPushButton(parent)
{
QApplication::setStartDragDistance(30) ;
QApplication::setStartDragTime(1000) ;
}
void QDrapButton::mousePressEvent(QMouseEvent *event)
{
QPoint hotSpot = event->pos();
QMimeData *mimeData = new QMimeData;
mimeData->setText(objectName());
mimeData->setData("application/x-hotspot",
QByteArray::number(hotSpot.x())
+ " " + QByteArray::number(hotSpot.y()));
mimeData->setImageData(icon()) ;
QPixmap pixmap(size());
render(&pixmap);
QDrag *drag = new QDrag(this);
drag->setMimeData(mimeData);
drag->setPixmap(pixmap);
drag->setHotSpot(hotSpot);
Qt::DropAction dropAction = drag->exec(Qt::CopyAction | Qt::MoveAction, Qt::CopyAction);
if (dropAction == Qt::MoveAction)
{
close();
update();
}
}