Qt cpp 控件大小固定200, 高56。 在paintEvent 内绘制两行字体,字体行高固定24px,两行间距12px,文字颜色rgb(224, 238, 254)。要求文字部分居中,其他部分透明
时间: 2023-10-01 21:08:21 浏览: 86
下面是示例代码:
```cpp
void MyWidget::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
// 设置绘制区域
QRect rect(0, 0, 200, 56);
QPainter painter(this);
painter.setClipRect(rect);
// 绘制背景
painter.fillRect(rect, QColor(0, 0, 0, 0));
// 绘制文字
QString text1 = "Hello, world!";
QString text2 = "This is Qt programming.";
QFont font("Arial", 14);
QFontMetrics fm(font);
int textHeight = fm.height();
int lineHeight = textHeight + 12;
int y = (56 - lineHeight * 2) / 2;
painter.setFont(font);
painter.setPen(QColor(224, 238, 254));
QRect textRect1(0, y, 200, textHeight);
painter.drawText(textRect1, Qt::AlignHCenter | Qt::AlignVCenter, text1);
QRect textRect2(0, y + lineHeight, 200, textHeight);
painter.drawText(textRect2, Qt::AlignHCenter | Qt::AlignVCenter, text2);
}
```
这个代码中,我们首先设置了绘制区域,并使用 QPainter 对象进行绘制。然后我们绘制了背景,使用了透明色。
接着,我们设置了字体和字体测量信息,并计算了行高和文字起始位置。然后我们使用 QPainter 绘制了两行文字,分别位于中心位置。最后,我们不需要调用 end() 函数,因为 QPainter 的析构函数在函数结束时会自动调用。
阅读全文