如何使用 QPainter 绘制椭圆?

How can I draw an ellipse using QPainter?

我想在 UI 中绘制椭圆,但我的代码不起作用。

QWidget::paintEngine:不应再调用 QPainter::begin:绘画设备返回引擎 == 0,类型:1

Mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
 : QMainWindow(parent)
 , ui(new Ui::MainWindow), pm(100,100)
{
 ui->setupUi(this);
 //set_form_style();
 draw_ellipse();
}

MainWindow::~MainWindow()
{
 delete ui;
}

void MainWindow::set_form_style(){
 //setWindowFlags(Qt::FramelessWindowHint);
 //setAttribute(Qt::WA_TranslucentBackground);
 //ui->widget->setStyleSheet("background:transparent;");

 setMouseTracking(true);

}

void MainWindow::draw_ellipse(){
 QPainter painter(this);
 painter.setRenderHint(QPainter::Antialiasing);
 painter.setBrush(QBrush(Qt::red, Qt::SolidPattern));
 painter.drawEllipse(100, 50, 150, 150);
}

为什么不直接创建一个 svg,添加资源文件,然后在标签、图像或其他任何地方使用该 svg。我是新手,但我认为它会完成工作,因为我以前用这种方式做过同样的事情,但对你来说可能会有所不同,我不能这么确定。

问题不在于您使用 QPainter 的方式,而在于您获取它的时间。

正如 reference documentation 所说,“QPainter 的常见用途是在小部件的绘制事件中”。因此,如果您想在主 window 中进行自定义绘画,请覆盖 paintEvent 并将您的代码放在那里。