• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            tqsheng

            go.....
            隨筆 - 366, 文章 - 18, 評(píng)論 - 101, 引用 - 0
            數(shù)據(jù)加載中……

            QT精彩實(shí)例分析

            qt的畫圖機(jī)制為顯示器和打印提供了統(tǒng)一的api接口,主要有3個(gè)大類QPainter(提供畫圖操作的基本接口和操作) QPaintDevice(提供畫圖的設(shè)備也就是你的圖畫在那個(gè)地方)和QPaintEngine(為QPainter和QPaintDevice提供內(nèi)部使用的抽象接口定義,一般不會(huì)用到的).

            QPainter-->QPaintEngine---->QPaintDevice

            其中QPaintDevice有QWidget 、QImage、QPixmap、QPicture、QGLWidget、QPrinter、QGLPixleBuffer

            http://qt-apps.org/

            http://www.qtcentre.org/content/


            今天寫個(gè)簡(jiǎn)單的時(shí)鐘的程序,秒鐘、分鐘,時(shí)鐘能夠自動(dòng)的正確的顯示現(xiàn)在的時(shí)間,但是不能夠修改。這個(gè)程序非常簡(jiǎn)單需要的基本知識(shí)是:

            1.Qpainter類

            2.QTimer

            步驟:

            1.先新建一個(gè)widget

            2.重新定義void paintEvent(QPainter *painter)

            3.定義一個(gè)畫圖的函數(shù) void draw(QPainter *painter)

            main.cpp

            #include <QtGui/QApplication>

            #include "timer.h"
            #include<QTextCodec>
            int main(int argc, char *argv[])
            {
                QApplication a(argc, argv);
                QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
                Timer w;
                w.show();
                return a.exec();
            }

            timer.h

            #ifndef TIMER_H

            #define TIMER_H
            #include <QWidget>
            namespace Ui {
                class Timer;
            }
            class Timer : public QWidget
            {
                Q_OBJECT
            public:
                explicit Timer(QWidget *parent = 0);
                ~Timer();
                void paintEvent(QPaintEvent *);
                void draw(QPainter *painter);
            private:
                Ui::Timer *ui;
            };
            #endif // TIMER_H

            timer.cpp

            #include "timer.h"

            #include "ui_timer.h"
            #include<QtGui>
            Timer::Timer(QWidget *parent) :
                QWidget(parent),
                ui(new Ui::Timer)
            {
                ui->setupUi(this);
                QTimer *timer = new QTimer;//新建一個(gè)定時(shí)器來(lái)定時(shí)刷新圖
                connect(timer,SIGNAL(timeout()),this,SLOT(update()));
                timer->start(1000);//每隔1秒鐘重新繪制一下
                setWindowTitle(tr("深海的小魚兒"));//定義widget的標(biāo)題
                resize(200,200);//初始固定大小為200x200
            }
            Timer::~Timer()
            {
                delete ui;
            }
            void Timer::paintEvent(QPaintEvent *)
            {
                QPainter painter(this); //定義一個(gè)畫筆
                painter.setRenderHint(QPainter::Antialiasing);//開啟反轉(zhuǎn)使你畫的圖比較光滑
                int side = qMin(width(), height());//取長(zhǎng)寬的最小值來(lái)作為你放大和縮小的標(biāo)準(zhǔn)值(也就是說(shuō)你的
                painter.translate(width() / 2, height() / 2);//長(zhǎng)寬是一樣的,這樣縮放時(shí)不會(huì)變形。移到中心點(diǎn),這時(shí)width/height=200
                painter.scale(side / 200.0, side / 200.0);
                draw(&painter);//開始畫圖
            }
            void Timer::draw(QPainter *painter)
            {
                static const QPoint hourHand[3] = {
                    QPoint(7, 8),
                    QPoint(-7, 8),
                    QPoint(0, -40)
                };//定義時(shí)針的圖像
                static const QPoint minuteHand[3] = {
                    QPoint(7, 8),
                    QPoint(-7, 8),
                    QPoint(0, -65)
                };//定義分針的圖像
                static const QPoint secondHand[3] = {
                    QPoint(7, 8),
                    QPoint(-7, 8),
                    QPoint(0, -85)
                };//定義秒針的圖像
                QColor hourColor(127, 0, 127);//定義時(shí)針的顏色
                QColor minuteColor(0, 127, 127, 191);//定義分針的顏色
                QColor secondColor(0, 0,255);//定義秒針的顏色
                QTime time = QTime::currentTime();//取系統(tǒng)的時(shí)間
                painter->setPen(Qt::NoPen);//開始畫秒針的在系統(tǒng)時(shí)間的位置
                painter->setBrush(secondColor);
                painter->save();
                painter->rotate(time.second()*6);//360/60=6
                painter->drawConvexPolygon(secondHand, 3);
                painter->restore();
                painter->setPen(Qt::NoPen);//開始畫分針的在系統(tǒng)時(shí)間的位置
                painter->setBrush(hourColor);
                painter->save();
                painter->rotate(30.0 * ((time.hour() + time.minute() / 60.0)));
                painter->drawConvexPolygon(hourHand, 3);
                painter->restore();
                painter->setPen(hourColor);
                for (int i = 0; i < 12; ++i)
                {
                    painter->drawLine(88, 0, 96, 0);
                    painter->rotate(30.0);
                }
                painter->setPen(Qt::NoPen);//開始畫時(shí)針的在系統(tǒng)時(shí)間的位置
                painter->setBrush(minuteColor);
                painter->save();
                painter->rotate(6.0 * (time.minute() + time.second() / 60.0));
                painter->drawConvexPolygon(minuteHand, 3);
                painter->restore();
                painter->setPen(minuteColor);
                for (int j = 0; j < 60; ++j)
                {
                    if ((j % 5) != 0)
                        painter->drawLine(92, 0, 96, 0);
                    painter->rotate(6.0);
                }

            posted on 2012-12-07 22:58 tqsheng 閱讀(812) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            很黄很污的网站久久mimi色| 国内精品久久久久久久coent| 久久精品视频免费| 亚洲国产欧美国产综合久久| 伊人久久精品无码av一区| 欧美麻豆久久久久久中文| 久久综合精品国产一区二区三区 | 久久亚洲色一区二区三区| 中文字幕亚洲综合久久2| 久久久久久a亚洲欧洲aⅴ| 久久99国产精品久久| 99久久精品免费看国产一区二区三区| 久久综合九色综合久99| 人妻无码αv中文字幕久久琪琪布 人妻无码精品久久亚瑟影视 | 国产AⅤ精品一区二区三区久久| 久久香蕉综合色一综合色88| 国产99久久九九精品无码| 国产精品无码久久综合网| 婷婷久久综合九色综合九七| 精品久久久中文字幕人妻| 77777亚洲午夜久久多人| 99999久久久久久亚洲| 国内精品久久久久久久久| 久久国产AVJUST麻豆| 97久久精品午夜一区二区| 国产精品日韩欧美久久综合| 中文字幕精品久久久久人妻| 无码人妻久久一区二区三区| 国产L精品国产亚洲区久久| 久久久国产亚洲精品| 精品久久久久久亚洲| 综合久久精品色| 青草影院天堂男人久久| 少妇熟女久久综合网色欲| 久久精品国产福利国产秒| 久久精品国产亚洲av麻豆蜜芽| 久久综合中文字幕| 久久99国产精品尤物| 伊人色综合久久天天网| 国产一级做a爰片久久毛片| 久久久久高潮综合影院|