gpt4 book ai didi

c++ - 画一个里面有数字的实心圆

转载 作者:太空宇宙 更新时间:2023-11-04 13:40:37 25 4
gpt4 key购买 nike

我想在未填充时绘制一个圆圈,当用户点击它时,它应该被填充。在圆圈内我想写一个数字。

我尝试了 QPixmap、QLabel 和一些 QPainterPath 来让它工作,但我无法这样做。我怎样才能做到这一点?

我需要圆圈没有背景,只在圆圈内有一个数字。圆圈内部的填充是可选的,一次填充颜色,一次不填充。请指教。

最佳答案

这通过子类化 QWidget 非常简单,如下面的示例代码所示:

#include <QApplication>
#include <QMouseEvent>
#include <QWidget>
#include <QPainter>

class CircleWidget : public QWidget
{
public:
CircleWidget(int number) : _number(number), _fill(false) {/*empty*/}

virtual void paintEvent(QPaintEvent * e)
{
e->accept();

QPainter p(this);

QRect r = rect();
p.setPen(Qt::black);
if (_fill) p.setBrush(Qt::green);
p.drawEllipse(r);

p.drawText(r, Qt::AlignCenter, QString("%1").arg(_number));
}

virtual void mousePressEvent(QMouseEvent * e)
{
_fill = !_fill;
update(); // this will induce another call to paintEvent() ASAP
e->accept();
}

private:
const int _number;
bool _fill;
};

int main(int argc, char ** argv)
{
QApplication app(argc, argv);

CircleWidget cw(5);
cw.resize(60,60);
cw.show();
return app.exec();
}

关于c++ - 画一个里面有数字的实心圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27770431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com