У меня QVector<QPoint> m_vertices;
в моем drawingwidget.h
class DrawingWidget: public QWidget {
Q_OBJECT
public:
DrawingWidget(MainWindow *parent = 0);
~DrawingWidget();
QVector<QPoint> m_vertices;
Я пытаюсь добавить / удалить вершины в моем главном окне . Мне удалось создать функцию добавления, теперь их легко удалить, но я немного запутался.
Основная идея в том, что у меня есть всплывающее меню, где я могу выбрать " орудие труда". Я могу добавить вершину, удалить вершину, переместить вершину, добавить строку, удалить строку. Идея заключается в том, что когда я выбираю, например, «Добавить вершину», то «m_state» изменится на «ADD_VERTEX_SELECTED», поэтому я могу добавлять только вершины и ничего больше.
enum DrawingWidgetState {
NO_TOOL_SELECTED,
ADD_VERTEX_SELECTED,
MOVE_VERTEX_SELECTED,
DELETE_VERTEX_SELECTED,
ADD_LINE_SELECTED,
DELETE_LINE_SELECTED
};
Рисование
void DrawingWidget::paintEvent(QPaintEvent *event) {
QPainter painter(this);
painter.fillRect(event->rect(), Qt::blue);
painter.setBrush(Qt::black);
for(int i = 0; i < m_vertices.size() ; i++) {
painter.drawEllipse(m_vertices[i], 20, 20);
}
Событие MousePress. При щелчке левой кнопкой мыши я должен удалить вершину, на которую нажал
void DrawingWidget::mousePressEvent(QMouseEvent *event) {
if(m_state == ADD_VERTEX_SELECTED) {
if(event->button() == Qt::LeftButton) {
//m_x = event->x();
//m_y = event->y();
//update();
QPoint point = event->pos();
m_vertices.append(point);
update();
}
}
if(m_state == DELETE_VERTEX_SELECTED) {
if(event->button() == Qt::LeftButton) {
m_vertices.clear();
}
}
}
Как я могу это сделать?