openKylin论坛

 找回密码

邀请各位观看一个神奇的事情。关于Qt的 [复制链接]

首先上主要代码:
  1. #include "mainwindow.h"
  2. #include <QtGui>

  3. MainWindow::MainWindow(QWidget *parent)
  4. : QWidget(parent),rot(0)
  5. {
  6.         setFixedSize(1020,620);
  7.         timer = new QTimer(this);
  8.         connect(timer,SIGNAL(timeout()),this,SLOT(update()));
  9.         timer->start(20);
  10. }

  11. MainWindow::~MainWindow()
  12. {

  13. }

  14. void MainWindow::paintEvent(QPaintEvent *)
  15. {
  16.         rot += 2;
  17.         QPainter painter(this);
  18.         int k=-1;
  19.         painter.setWindow(-110,-110,1020,620);
  20.         painter.setRenderHint(QPainter::Antialiasing,true);
  21.         QMatrix matrix;
  22.         for(int i=10;i<420;i+=200)
  23.                 for(int j=10;j<820;j+=200,k=-k){
  24.                         matrix.reset();
  25.                         matrix.translate(i,j);
  26.                         matrix.rotate(rot*k);
  27.                         painter.setWorldMatrix(matrix);
  28.                         painter.setBrush(QBrush(Qt::black,Qt::SolidPattern));
  29.                         painter.setPen(QPen(Qt::red,0,Qt::NoPen,Qt::RoundCap));
  30.                         painter.drawPie(-100,-100,200,200,93*16,180*16);
  31.                         painter.setBrush(QBrush(Qt::white,Qt::SolidPattern));
  32.                         painter.drawPie(-100,-100,200,200,273*16,180*16);
  33.                         painter.drawPie(-50,-100,100,100,90*16,180*16);
  34.                         painter.setBrush(QBrush(Qt::black,Qt::SolidPattern));
  35.                         painter.drawPie(-50,0,100,100,270*16,180*16);
  36.                         painter.drawEllipse(-20,-70,20,20);
  37.                         painter.setBrush(QBrush(Qt::white,Qt::SolidPattern));
  38.                         painter.drawEllipse(-20,30,20,20);
  39.                 }
  40. }

  41. void MainWindow::mousePressEvent(QMouseEvent *)
  42. {

  43.         if(timer->isActive())
  44.                 timer->stop();
  45.         else
  46.                 timer->start(20);
  47. }
复制代码
这是两个嵌套的for循环,目的是画3x5=15个一样的图形,但是,请看截图:

仅仅出现九个。右边没显示。为什么会这样?
附上工程源码 painter.tar.bzip2 (1.21 KB, 下载次数: 0)
楼主
发表于 2013-6-4 11:20:02
回复

使用道具 举报

邀请各位观看一个神奇的事情。关于Qt的 [复制链接]

粗心大意了点。i和j位置搞反了。
沙发
 楼主| 发表于 2013-6-4 23:03:13
回复

使用道具 举报

openKylin

GMT+8, 2024-5-17 13:07 , Processed in 0.016011 second(s), 20 queries , Gzip On.

Copyright ©2022 openKylin. All Rights Reserved .

ICP No. 15002470-12 Tianjin

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