我有Qt的问题。我想拖动图像并使用QGraphicsPixmapItem
和dragenterevent,但它没有出现在控制台中?
但其他功能,如hoverEnterEvent工作核心???
这是代码:
请帮忙吗?
class button : public QGraphicsPixmapItem
{
public:
button(const QPixmap &);
button();
void changepic( QPixmap,int ,int);
void mousePressEvent(QGraphicsSceneMouseEvent*event);
void dragenterEvent(QGraphicsSceneDragDropEvent *event){
event->setAccepted(1);
qDebug("drag");
}
void dropEvent(QGraphicsSceneDragDropEvent *event){
qDebug("drop");
}
void hoverEnterEvent(QGraphicsSceneHoverEvent *event){
// do something
// this->setPos(this->x()+10,this->y()+10);
qDebug("k");
QGraphicsItem::hoverMoveEvent(event);
}
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
};
答案 0 :(得分:11)
您是否只想在场景中移动图形项目?如果是这样,那么您需要做的就是为项目设置一些标志。例如,
setFlag(QGraphicsItem::ItemIsSelectable);
setFlag(QGraphicsItem::ItemIsMovable);
setFlag(QGraphicsItem::ItemSendsGeometryChanges);
如果您实际上是想在您的图形项目上实施拖放操作,则必须为您的项目调用setAcceptDrops(true)
。
部分额外工作的原因是,默认情况下,Qt正在尝试优化场景的性能。因此,您必须明确选择加入其中一些额外功能。你说,“我知道这会对性能产生负面影响,但我对此很满意;我需要这个功能。”