在widget上画meter 为什么不显示呢?
用的 new meter(this);
不在widget上显示paintevent()内容
然后用 new meter();
meter->show();
在widget窗口后面新开了个窗口显示paintevent()的内容
#ifndef METER_H#define METER_H
#include <QWidget>
class meter : public QWidget{
Q_OBJECTpublic:
explicit meter(QWidget *parent = 0);
signals:
public slots:
protected:
void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;};
#endif // METER_H
#include "meter.h"#include <QPainter>#include <QConicalGradient>
meter::meter(QWidget *parent) : QWidget(parent){
}
void meter::paintEvent(QPaintEvent *event){
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);//反锯齿
painter.translate(width() / 2, height() / 2); /* 坐标变换为窗体中心 */
//创建画笔
QPen pen(Qt::red, 0, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
//使用画笔
painter.setPen(pen);
QRectF rectangle(100.0, 100.0, 200.0, 200.0);
int startAngle = 30 * 16;
int spanAngle = 120 * 16;
//锥形渐变
QConicalGradient conicalGradient(QPointF(200, 200),30);
conicalGradient.setColorAt(0, QColor(236,98,33));
conicalGradient.setColorAt(0.08, QColor(Qt::yellow));
conicalGradient.setColorAt(0.16, QColor(Qt::green));
conicalGradient.setColorAt(0.33, QColor(0,145,207)); //对锥形没有效果 //conicalGradient.setSpread(QGradient::ReflectSpread);
painter.setBrush(conicalGradient); //指定渐变区域以外的区域的扩散方式
//painter.drawEllipse(QPointF(100, 100), 50, 50);
//painter.drawArc(rectangle, startAngle, spanAngle); //绘制扇形
painter.drawPie(rectangle, startAngle, spanAngle);
}#ifndef WIDGET_H#define WIDGET_H
#include <QWidget>#include "meter.h"
namespace Ui {class Widget;}
class Widget : public QWidget{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0); ~Widget();
private:
Ui::Widget *ui;
meter *mymeter;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget)
{ ui->setupUi(this);
mymeter=new meter(this);
mymeter->show();}
Widget::~Widget()
{ delete ui;}