QT4实现信号灯随时间变化颜色的功能

28 篇文章 0 订阅

 最近在研究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并不能实现!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值