c++ Qt按钮重绘为圆形,重绘文字。
时间: 2024-04-16 16:28:43 浏览: 152
要将Qt按钮重绘为圆形并重绘文字,你可以重写按钮的paintEvent函数,并使用QPainter来实现。以下是示例代码:
```cpp
#include <QtWidgets>
class RoundButton : public QPushButton
{
public:
RoundButton(QWidget* parent = nullptr) : QPushButton(parent) {}
protected:
void paintEvent(QPaintEvent* event) override
{
Q_UNUSED(event);
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
// 绘制圆形背景
QPen pen(Qt::black);
painter.setPen(pen);
QBrush brush(Qt::red);
painter.setBrush(brush);
QRectF rect(0, 0, width(), height());
painter.drawEllipse(rect);
// 绘制文字
painter.setPen(Qt::white);
QFont font = painter.font();
font.setPointSize(12);
painter.setFont(font);
painter.drawText(rect, Qt::AlignCenter, text());
}
};
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
QWidget widget;
QVBoxLayout layout(&widget);
RoundButton button;
button.setText("Round Button");
button.setMinimumSize(100, 100);
layout.addWidget(&button);
widget.setLayout(&layout);
widget.show();
return app.exec();
}
```
在这个示例中,我们创建了一个名为RoundButton的自定义按钮类,继承自QPushButton。在paintEvent函数中,我们使用QPainter来绘制圆形背景,并在圆形内部绘制文字。你可以根据需要调整颜色、字体等属性。
请注意,我们还设置了按钮的最小尺寸,以确保按钮以圆形的形式显示。
通过重写paintEvent函数并使用QPainter来实现自定义的绘制,我们可以将按钮重绘为圆形并重绘文字。
阅读全文