优化一下下面这段代码 if(this->isShowLockRect()) { for (auto rect : m_lockRects) { painter->setBrush(QBrush()); painter->setPen(QPen(Qt::red,80)); QPointF point = this->mapFromScene(rect.at(0),rect.at(1)); painter->drawRect(point.x(), -point.y(), abs(rect.at(2) - rect.at(0)), abs(rect.at(3) - rect.at(1))); } }
时间: 2023-12-17 08:06:10 浏览: 78
qt-transparent-main-window:带有无框窗口和圆角的 Qt UI
有几个地方可以对上述代码进行优化:
1. 避免重复的函数调用:将 `this->isShowLockRect()` 的结果存储在一个变量中,避免在每次循环迭代中重复调用该方法。
2. 减少重复的设置操作:将画笔和画刷的属性设置移到循环之外,并且只在需要绘制矩形时进行设置。
3. 使用矩形的成员函数 `width()` 和 `height()`,避免多次访问矩形的坐标点。
优化后的代码如下所示:
```cpp
bool showLockRect = this->isShowLockRect();
if (showLockRect) {
painter->setBrush(QBrush());
painter->setPen(QPen(Qt::red, 80));
}
for (const auto& rect : m_lockRects) {
if (showLockRect) {
QPointF startPoint = this->mapFromScene(rect.topLeft());
qreal width = rect.width();
qreal height = rect.height();
painter->drawRect(startPoint.x(), -startPoint.y(), width, height);
}
}
```
这样做的好处是,避免了重复的函数调用和设置操作,并且使用矩形的成员函数进行宽高计算,使代码更加简洁和高效。
阅读全文