void MainWindow::paintEvent(QPaintEvent *event) { if(flagTurnOnNet) paintAllLineNet(listLineNet); paintAllLine(m_allWidget->listStructLine); if(flagMouseLineDrawing == true) { if((m_allWidget->lastObjectName != "")||(m_allWidget->lastLineClicked!=-1)) { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing,true); QPen pen = painter.pen(); pen.setWidth(m_allWidget->lineWidth); painter.setPen(pen); painter.drawLine(lastMousePos,posMouseCurrent); // 后面为什么不用加上菜单栏高度呢,因为这个是用实时鼠标坐标,是正确的 } } }
时间: 2024-04-27 21:23:28 浏览: 167
C++ QMainWindow无边框窗口自定义标题栏可拖拽移动拉伸改变窗口大小
5星 · 资源好评率100%
这段代码是实现窗口的绘制事件。在函数中,首先判断是否需要绘制网络图,如果需要则调用 `paintAllLineNet` 函数绘制网络图;然后调用 `paintAllLine` 函数绘制图上所有的线条。
接着判断是否正在绘制新的连线,如果正在绘制,则创建 QPainter 对象,设置画笔的宽度和颜色,然后绘制从上一次鼠标位置到当前鼠标位置的连线。
注意,这里绘制的坐标是实时鼠标坐标,不需要考虑菜单栏的高度。
阅读全文