最近在研究QPainter画图然后实现图片的变化,这里用到了设置字体、画笔、线、定时器、信号与槽等内容,很高兴又学到了一些
东西。
QTimer定时器:
QTimer *timer=new QTimer();
timer->setSingleShot(false);
QObject::connect(timer,SIGNAL(timeout()),&w,SLOT(green()));
QObject::connect(timer,SIGNAL(timeout()),&w,SLOT(set()));
QObject::connect(timer,SIGNAL(timeout()),&w,SLOT(update()));//小灯变化后颜色的更新
//update:重新调用了paintEvent事件
timer->start(1000);
画图绘制(包含画笔、画刷、字体等设置):
void MyMain::paintEvent(QPaintEvent *)
{
paint=new QPainter;
paint->begin(this);
paint->setPen(QPen(Qt::blue,2));
paint->drawLine(0,70,640,70);
paint->setPen(QPen(Qt::green));
paint->drawLine(0,110,640,110);
// *********************point*****************
paint->setPen(Qt::white);
paint->setBrush(QBrush(Qt::white,Qt::SolidPattern));
paint->drawEllipse(275,108,5,5);
// *********************light*******************
paint->drawLine(277,95,277,105);
paint->setBrush(QBrush(Qt::white,Qt::SolidPattern));
paint->drawEllipse(277,95,10,10);
QColor hourColor(a,0,b);
paint->setBrush(QBrush(hourColor,Qt::SolidPattern));
paint->drawEllipse(278,96,8,8);
paint->setFont(QFont("Arial",10));
paint->drawText(253,105,"D30");
// *********************************************
paint->end();
最后的头文件:
class MyMain:public QWidget
{
Q_OBJECT
public:
MyMain(QWidget *parent=0);
public slots:
void set();
void green();
private:
QTextEdit *textEdit;
int count;
void paintEvent(QPaintEvent *);
QPainter *paint;
};
注:绘图必须在paintEvent中进行,在网上看到说有方法就是在构造函数中加上一句话就可在其他函数内进行画图,
不过研究了下好像QT4.3.5并不能实现!