【发布时间】:2020-07-27 23:01:15
【问题描述】:
我正在尝试在paintEvent() 之外绘制矩形。
如果用户用鼠标单击并拖动屏幕,应用程序应绘制“选择区域”。
但是在paintEvent()之外似乎不可能绘画。
我已经在 MFC 上使用 ReleaseDC() 解决了这个问题。
这是我在 MFC 上的代码:
void DrawingPaper::DrawSelectingArea() {
CDC *dc = this->GetDC();
CPen pen;
CPen *oldPen;
dc->SetROP2(R2_NOTXORPEN);
pen.CreatePen(PS_DOT, 1, RGB(166, 166, 166));
oldPen = dc->SelectObject(&pen);
dc->Rectangle(this->startX, this->startY, this->currentX, this->currentY);
dc->SelectObject(oldPen);
this->ReleaseDC(dc);
DeleteObject(pen);
}
虽然代码不在 OnPaint() 中,但它运行良好。
但是在 Qt 上,怎么做?
这是我在 Qt 上的代码:
void DrawingPaper::DrawSelectingArea() {
QPainter painter(this);
QRect drawRect(this->startX, this->startY, this->currentX, this->currentY);
painter.drawRect(drawRect);
//this->ReleaseDC(dc);
}
它不起作用,因为绘制矩形的画家将被paintEvent()中的其他QPainter删除。
有没有类似 ReleaseDC() 的解决方案?
我使用的是 Qt 5.12.6。
感谢您的帮助。
【问题讨论】:
-
只用
QRubberBand?