QT QLabel之Drag拖放复制图片测试
效果图
这里需要mousePressEvent定义好QMimeData的data数据格式
TestWidget::TestWidget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::TestWidget)
{
ui->setupUi(this);
setAcceptDrops(true);//窗口允许拖放
this->setWindowTitle("Drag测试");
QLabel *lb1=ui->label1;
QPixmap pix(":res/f1.png");
lb1->setPixmap(pix);
lb1->resize(pix.size());
}
void TestWidget::mousePressEvent(QMouseEvent *event)
{
QLabel *child = static_cast(childAt(event->pos()));
if (服务器托管网child==NULL){
return;
}
if(!child->inherits("QLabel"))//如果不是QLabel则直接返回
return;
QPixmap pixmap = *child->pixmap();//获取QLabel中的图片
//if(&pixmap==NULL){return;}
QByteArray itemData;
QDataStream dataSteam(&itemData,QIODevice::WriteOnly);
dataSteampos()-child->pos());
QMimeData *mimeData = new QMimeData;
mimeData->setData("testimage/png",itemData);
QDrag *drag = new QDrag(this);
drag->setMimeData(mimeData);
drag->setPixmap(pixmap);
drag->setHotSpot(event->pos()-child->pos());
drag->exec(Qt::CopyAction | Qt::MoveAction,Qt::CopyAction);
}
void TestWidget::dragEnterEvent(QDragEnterEvent *event)
{
if(event->mimeData()->hasFormat("testimage/png"))
{
event->setDropAction(Qt::MoveAction);
event->accept();
}else
event->ignore();
}
void TestWidget::dropEvent(QDropEvent *event)
{
QLabel *child = static_cast(childAt(event->pos()));
if (child==NULL){//如果目标为空QLabel直接返回
event->ignore();
return;
}
if(!child->inherits("QLabel"))//如果目标不是QLabel直接返回
{
event->ignore();
return;
}else{
//如果有自定义的MIME类型数据
if(event->mimeData()->hasFormat("testimage/png"))
{
QByteArray itemData = event->mimeData()->data("testimage/png");
QDataStream dataStream(&itemData,QIODevice::ReadOnly);
QPixmap pixmap;
QPoint offset;
dataS服务器托管网tream>>pixmap>>offset;
child->setPixmap(pixmap);//在目标QLable设置图片
event->setDropAction(Qt::MoveAction);
event->accept();
}else
event->ignore();
}
}
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
索引 索引在MySQL中是举足轻重的。在添加索引后,我们在MySQL的查询上会极大的提高我们的查询效率,这也是慢查询解决办法之一。 数据结构 最初的时候MySQL中是采用二叉树进行插入数据的,这样的缺点很明显,就是树太高了,就如下图所示,我们需要查询5这个数据…