openKylin论坛

 找回密码

使用qt画太极图 [复制链接]

本帖最后由 东方巽雷 于 2013-5-9 20:56 编辑

我画了一个太极图,并以一定速率做旋转,发现旋转时出现一条直径,不知怎么回事。效果图和代码如下:
  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3. #include <QWidget>
  4. class MainWindow : public QWidget
  5. {
  6.     Q_OBJECT   
  7. public:
  8.     MainWindow(QWidget *parent = 0);
  9.     ~MainWindow();
  10. protected:
  11.     void paintEvent(QPaintEvent *);
  12. private:
  13.     double rot;
  14. };
  15. #endif // MAINWINDOW_H
复制代码
  1. #include "mainwindow.h"
  2. #include <QtGui>

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

  11. MainWindow::~MainWindow()
  12. {
  13.    
  14. }

  15. void MainWindow::paintEvent(QPaintEvent *)
  16. {
  17.     rot += 1;
  18.     QPainter painter(this);
  19.     painter.setWindow(-210,-210,420,420);
  20.     painter.rotate(rot);
  21.     painter.setRenderHint(QPainter::Antialiasing,true);
  22.     painter.setBrush(QBrush(Qt::black,Qt::SolidPattern));
  23.     painter.setPen(QPen(Qt::red,0,Qt::NoPen,Qt::RoundCap));
  24.     painter.drawPie(-200,-200,400,400,90*16,180*16);
  25.     painter.setBrush(QBrush(Qt::white,Qt::SolidPattern));
  26.     painter.drawPie(-200,-200,400,400,270*16,180*16);
  27.     painter.drawPie(-100,-200,200,200,90*16,180*16);
  28.     painter.setBrush(QBrush(Qt::black,Qt::SolidPattern));
  29.     painter.drawPie(-100,0,200,200,270*16,180*16);
  30.     painter.drawEllipse(-20,-130,40,40);
  31.     painter.setBrush(QBrush(Qt::white,Qt::SolidPattern));
  32.     painter.drawEllipse(-20,70,40,40);

  33. }
复制代码
楼主
发表于 2013-5-9 12:33:05
回复

使用道具 举报

使用qt画太极图 [复制链接]

干嘛让MainWindow去继承QLabel,QWidget或者QMainWindow就行了吧。
沙发
发表于 2013-5-9 12:41:54
回复

使用道具 举报

使用qt画太极图 [复制链接]

lixiao 发表于 2013-5-9 12:41
干嘛让MainWindow去继承QLabel,QWidget或者QMainWindow就行了吧。

有何区别?
板凳
 楼主| 发表于 2013-5-9 12:49:23
回复

使用道具 举报

使用qt画太极图 [复制链接]

东方巽雷 发表于 2013-5-9 12:49
有何区别?

QLabel和QWidget在这个例子里也不会引起什么区别……我强迫症
地板
发表于 2013-5-9 12:54:29
回复

使用道具 举报

使用qt画太极图 [复制链接]

lixiao 发表于 2013-5-9 12:54
QLabel和QWidget在这个例子里也不会引起什么区别……我强迫症

大哥,这网站怎么排版代码呀?为何搞成这样了?换行符无效?
5#
 楼主| 发表于 2013-5-9 12:56:25
回复

使用道具 举报

使用qt画太极图 [复制链接]

东方巽雷 发表于 2013-5-9 12:56
大哥,这网站怎么排版代码呀?为何搞成这样了?换行符无效?

你为什么不直接贴代码,要发图片呢
6#
发表于 2013-5-9 13:47:27
回复

使用道具 举报

使用qt画太极图 [复制链接]

penghuan 发表于 2013-5-9 13:47 你为什么不直接贴代码,要发图片呢

我原来是发代码的,但是代码缩进全部没了,很难看。我不知道怎么排版。
7#
 楼主| 发表于 2013-5-9 14:21:37 来自手机
回复

使用道具 举报

使用qt画太极图 [复制链接]

东方巽雷 发表于 2013-5-9 14:21
我原来是发代码的,但是代码缩进全部没了,很难看。我不知道怎么排版。

用发代码的“<>”就可以了啊
8#
发表于 2013-5-9 14:23:46
回复

使用道具 举报

使用qt画太极图 [复制链接]

penghuan 发表于 2013-5-9 14:23 用发代码的“”就可以了啊

喔,请教大哥,太极图的直径影响美观,不过我不懂怎么去掉。如果是您来实现,怎么办?
9#
 楼主| 发表于 2013-5-9 14:26:53 来自手机
回复

使用道具 举报

使用qt画太极图 [复制链接]

东方巽雷 发表于 2013-5-9 14:26
喔,请教大哥,太极图的直径影响美观,不过我不懂怎么去掉。如果是您来实现,怎么办?

。。。。这个我不是很懂,多看看它的api吧,感觉是画2个半圆的时候它们的重叠部位导致的
10#
发表于 2013-5-9 17:02:01
回复

使用道具 举报

openKylin

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

Copyright ©2022 openKylin. All Rights Reserved .

ICP No. 15002470-12 Tianjin

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