Qt 关键接口: QPainter drawline().... QVector<QPoint> list
程序思路 通过鼠标的三事件 按下 移动 释放 分别获取 线段的起始点与终点
注意 list 存储线段数据 只在 按下和 释放事件中进行存取
随后在 paintevent 事件中进行 遍历处理
void MainWindow::mousePressEvent(QMouseEvent *event)
{
line_list <<event->pos() ;
start_point = event->pos();
}
void MainWindow::mouseReleaseEvent(QMouseEvent *event)
{
mouse_flag = false ;
line_list <<event->pos() ;
end_point = event->pos();
int CMD = 3 ;
int data[2] = {event->pos().x(),event->pos().y()};
int len =sizeof(data);
client.write((char*)&CMD,4);
client.write((char *)&len,4);
client.write((char* )data,len);
client.waitForBytesWritten();
repaint();
}
void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
if(mouse_flag)
{
list.append(event->pos());
end_point = event->pos();
}
repaint();
}
void MainWindow::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QPen pen(QColor::fromRgb(0,0,0));
pen.setWidth(6);
painter.setPen(pen);
painter.drawLine(start_point,end_point);
if(line_list.count() >= 2 )
for(int i = 0 ; i < line_list.count()-1 ; i+=2)
painter.drawLine(line_list[i],line_list[i+1]);
}