Qt学习(一)-------- 定时器、绘图

打印 上一主题 下一主题

主题 938|帖子 938|积分 2814

1.定时器 QTimer
   ⭐ 创建定时器对象  QTimer *timer = new QTimer(this);
   ⭐ 启动定时器 timer->start(毫秒);
   ⭐ 监听信号 connect(timer,&QTimer::timeout,[=](){     });
-----------------------------------------------------------例子-----------------------------------------------------------
  1.     QTimer *timer = new QTimer(this);
  2.     timer->start(500);
  3.     connect(timer,&QTimer::timeout,[=](){
  4.         static int num = 1;
  5.         ui->label->setText(QString::number(num++));
  6.     });
复制代码
    ⭐ 点击暂停,实现停止,点击开始,继续计时
  1.     connect(ui->pushButton_stop,&QPushButton::clicked,[=](){
  2.         timer->stop();
  3.     });
  4.     connect(ui->pushButton_start,&QPushButton::clicked,[=](){
  5.         timer->start();
  6.     });
复制代码
 
2.绘图 QPainter
   ⭐ 创建绘图事件  void paintEvent(QPaintEvent *);
   ⭐ 实例化画家对象QPainter painter(this);
   ⭐ 画线---drawLine,画圆---drawEllipse,画矩形---drawRect,画文字---drawText
   ⭐ 设置画笔---QPen pen, 设置画刷---QBrush brush,让画家使用画笔、画刷
-----------------------------------------------------------例子-----------------------------------------------------------
  1. void MainWindow::paintEvent(QPaintEvent *)
  2. {
  3.     QPainter painter(this);
  4.     // 设置画笔
  5.     QPen pen(QColor(255,0,0));
  6.     pen.setWidth(3);
  7.     pen.setStyle(Qt::DotLine);
  8.     painter.setPen(pen);
  9.     // 设置画刷
  10.     QBrush brush(Qt::cyan);
  11.     brush.setStyle(Qt::Dense7Pattern);
  12.     painter.setBrush(brush);
  13.     // 画线
  14.     painter.drawLine(QPoint(0,0), QPoint(100,100));
  15.     // 画圆
  16.     painter.drawEllipse(QPoint(100,100), 50 ,50);
  17.     // 画矩形
  18.     painter.drawRect(QRect(20,20,50,50));
  19.     // 画文字
  20.     painter.drawText(QRect(20,200,120,50),"好好学习,天天向上");<br>}
复制代码
   ⭐ 抗锯齿,效率低 painter.setRenderHint(QPainter::Antialiasing);
   ⭐ 对画家进行移动 painter.translate(100,0);
   ⭐ 保存状态---save,还原状态---restore
 -----------------------------------------------------------例子-----------------------------------------------------------
  1.     painter.drawRect(QRect(20,300,50,50));
  2.     painter.translate(100,0);
  3.     painter.save(); // 保存画家状态
  4.     painter.drawRect(QRect(20,300,50,50));
  5.     painter.restore(); // 还原画家保存状态
  6.     painter.drawRect(QRect(20,300,50,50));
复制代码
   ⭐ 手动调用绘图事件,点击按钮,进行图片移动
 -----------------------------------------------------------例子-----------------------------------------------------------
  1. connect(ui->pushButton_move,&QPushButton::clicked,[=](){
  2.         posX+=20;
  3.         update(); // 手动调用,用update更新
  4.     });
  5. void MainWindow::paintEvent(QPaintEvent *)
  6. {
  7.     QPainter painter(this);
  8.     // 如果超出屏幕,从0开始
  9.     if(posX > this->width())
  10.     {
  11.         posX = 0;
  12.     }
  13.     painter.drawPixmap(posX,200,QPixmap(":/img/lufei.jpg"));
  14. }
复制代码
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

尚未崩坏

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表