繁体   English   中英

如何使用 QPainter 绘制椭圆?

[英]How can I draw an ellipse using QPainter?

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

QWidget::paintEngine: 不应再称为 QPainter::begin: Paint device returned engine == 0, type: 1

主窗口.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,添加资源文件,然后在 label、图像或其他任何地方使用该 svg。 我是新手,但我认为它会完成工作,因为我以前做过同样的事情,但对你来说可能会有所不同,我不能这么确定。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM