| 192 | } |
| 193 | |
| 194 | void ElaRollerPicker::paintEvent(QPaintEvent* event) |
| 195 | { |
| 196 | Q_D(ElaRollerPicker); |
| 197 | QPainter painter(this); |
| 198 | painter.save(); |
| 199 | painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing); |
| 200 | // 边框和背景绘制 |
| 201 | QRect baseRect = rect(); |
| 202 | baseRect.adjust(1, 1, -1, -1); |
| 203 | painter.setPen(ElaThemeColor(d->_themeMode, BasicBorder)); |
| 204 | painter.setBrush(underMouse() ? ElaThemeColor(d->_themeMode, BasicHover) : ElaThemeColor(d->_themeMode, BasicBase)); |
| 205 | painter.drawRoundedRect(baseRect, d->_pBorderRadius, d->_pBorderRadius); |
| 206 | |
| 207 | // Roller内容绘制 |
| 208 | int rollerXOffset = 0; |
| 209 | for (int i = 0; i < d->_rollerPickerContainer->_rollerList.count(); i++) |
| 210 | { |
| 211 | auto roller = d->_rollerPickerContainer->_rollerList[i]; |
| 212 | painter.setPen(ElaThemeColor(d->_themeMode, BasicText)); |
| 213 | int rollerWidth = roller->width(); |
| 214 | painter.drawText(QRect(rollerXOffset, baseRect.y(), rollerWidth, baseRect.height()), Qt::AlignCenter, roller->getCurrentData()); |
| 215 | rollerXOffset += rollerWidth; |
| 216 | if (i != d->_rollerPickerContainer->_rollerList.count() - 1) |
| 217 | { |
| 218 | painter.setPen(ElaThemeColor(d->_themeMode, BasicBorder)); |
| 219 | painter.drawLine(rollerXOffset, 0, rollerXOffset, baseRect.bottom()); |
| 220 | } |
| 221 | } |
| 222 | painter.restore(); |
| 223 | } |
nothing calls this directly
no test coverage detected