Моя простая база кода на стандартном примере Qt 'diagram scene'. MainWindow - это просто просто загружать пользовательскую сцену. Пользовательский интерфейс выполнен в графическом редакторе. Перетащите и переместите графический многоугольник с помощью правой кнопки мыши, влево создайте новый элемент. Так? Я должен дважды щелкнуть по элементу, чтобы выбрать его. И элемент нужен двойной щелчок без последнего клика, когда я хочу переместить элемент. Полное головокружение.Qt - drag move qgraphicitem dont work nice
Код товара:
BasicDiagramItem::BasicDiagramItem(QGraphicsItem *parent):
QGraphicsPolygonItem(parent)
{
drawCustomPoly();
}
void BasicDiagramItem::drawCustomPoly()
{
QPainterPath path;
customPoly << QPointF(0,50) << QPointF(50,0)
<< QPointF(0,-50) << QPointF(-50,0)
<< QPointF(0,50);
setPolygon(customPoly);
setFlag(QGraphicsItem::ItemIsMovable, true);
setFlag(QGraphicsItem::ItemIsSelectable, true);
setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
//setFlag(QGraphicsItem::ItemClipsToShape,true); //testowe
}
void BasicDiagramItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
QGraphicsPolygonItem::mouseMoveEvent(event);
}
код Сцена:
DiagramScene::DiagramScene(QObject *parent):
QGraphicsScene(parent)
{
}
void DiagramScene::mousePressEvent(QGraphicsSceneMouseEvent *mouseEvent)
{
if(mouseEvent->button() != Qt::RightButton) return;
BasicDiagramItem *item;
item = new BasicDiagramItem();
//item->setBrush()
addItem(item);
item->setPos(mouseEvent->scenePos());
QGraphicsScene::mousePressEvent(mouseEvent);
}
void DiagramScene::mouseMoveEvent(QGraphicsSceneMouseEvent *mouseEvent)
{
QGraphicsScene::mouseMoveEvent(mouseEvent);
}
void DiagramScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *mouseEvent)
{
QGraphicsScene::mouseReleaseEvent(mouseEvent);
}
Этот код сходство с примером Qt. Я просто не использую режим для создания другого объекта, не использую меню cutom, и я не рисую стрелки.
Итак, что я делаю неправильно? Почему приложения имеют ошибку с двойным щелчком?
есть ли вопрос, который вы хотели спросить здесь ? –
Thx, я забыл написать непосредственно вопросы. На мой взгляд, у меня есть неправильные запуски соединений = вопросы об этом. dit post :) –