我正在學習Qt,我想在小部件上隨機繪製線條並繼續追加新行。下面的代碼在paintEvent中每當在窗口小部件上調用更新時都會繪製一條隨機線,但當paintEvent被調用時,如何停止窗口部件清除之前繪製的線?有沒有什麼辦法只是附加繪製的對象?Qt繪圖行
很明顯,我可以存儲所有的行並重新繪製它們,但是這對我將用這個應用程序執行的操作似乎沒有必要。
void MainWindow::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(QPen(Qt::black, 2));
painter.drawLine(QPointF(qrand() % 300, qrand() % 300), QPointF(qrand() % 300,qrand() % 300));
}
void MainWindow::on_b_toggleDrawing_triggered()
{
this->update();
}
這似乎工作,但它在全尺寸窗口上很慢,因爲它必須基本上覆制整個屏幕。重繪數百/數千行比較好。當我有機會時,我也會試試QPainterPath。 – user623879 2011-02-28 07:59:01