• 4186阅读
  • 1回复

[提问]大神帮忙看看在Qwidget上画图的问题 [复制链接]

上一主题 下一主题
离线smallcsduck
 

只看楼主 倒序阅读 楼主  发表于: 2016-04-23

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;}


离线smallcsduck

只看该作者 1楼 发表于: 2016-04-23
但是把meter加入一个布局以后 就可以在widget上显示了
是不是坐标系有问题?
快速回复
限100 字节
 
上一个 下一个