
--------------------------------------------------------------------------------------------------------------------------------
QPixmap轮廓剪裁
去掉Pixmap的外围部分,如下:
QPixmap pixmap("./img");
//调用createHeuristicMask(),再调用setMask
pixmap.setMask(pixmap.createHeuristicMask());
效果对比:
——》
可以看到以图像内轮廓为边界线,无关的白色区域被抹去了
---------------------------------------------------------------------------------------------------------------------------------
QGraphicsItem中开启拖动QDrag
重写QGraphicsItem的鼠标移动事件,在移动事件中开启拖动
void ColorItem::mouseMoveEvent(QGraphicsSceneMouseEvent * event) {
//判断拖动距离,使用qt推荐的距离QApplication::startDragDistance()
if (QLineF(event -> screenPos(), event -> buttonDownScreenPos(Qt::LeftButton))
.length() < QApplication::startDragDistance()) {
return;
}
//创建拖动对象
QDrag * drag = new QDrag(event -> widget());
//创建数据对象,并设置给本次拖动,这样本次拖动就有数据了
QMimeData * mime = new QMimeData;
drag -> setMimeData(mime);
QImage image(":/images/head.png");
mime -> setImageData(image);//可以设置图像数据
mime -> setColorData(color);//颜色数据
mime -> setText(QString("#%1%2%3")
.arg(color.red(), 2, 16, QLatin1Char('0'))
.arg(color.green(), 2, 16, QLatin1Char('0'))
.arg(color.blue(), 2, 16, QLatin1Char('0')));//字符串数据
QPixmap pixmap(34, 34);
pixmap.fill(Qt::white);
drag -> setPixmap(pixmap);//设置拖动过程中在鼠标处显示的图片
drag->setHotSpot(QPoint(15, 20));//设置鼠标在图片里的位

最低0.47元/天 解锁文章
1万+

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



