Qt學習之路一(一個簡單的時鐘)
阿新 • • 發佈:2019-01-23
今天開始接觸了qt,剛開始為了搭環境,找qt create找了好久,網上不怎麼好找,找了一個晚上才找到的,先把資源分享一下給大家。
QTSDK分享 http://pan.baidu.com/s/1cJ3jPW (傻瓜式操作,直接安裝,有點大,選擇自己需要的系統版本)
各版本的qt http://download.qt.io/archive/qt/4.8/4.8.6/
還有,本人英語不是太好,有些幫助手冊看不太懂,也找了一箇中文資料。
http://www.kuqin.com/qtdocument/index.html
以上的分享都是網上找的,希望大家在搭建環境的時候能少費一些功夫吧。
在環境搭建好之後,我開始學著做個小專案,看看能不能把介面搭起來,也是找了很多資料,查了很多視訊,個人覺得Qt小神童的教程很不錯,簡單易懂,很適合初學者。以下是我仿照寫的一個小專案,一個時鐘。
#ifndef CLOCK_H #define CLOCK_H #include <QtGui/QMainWindow> #include <qpainter> #include <QPoint> #include <QTime> #include <QTimer> static QPoint sed[4] = {QPoint(0, -70), QPoint(2,0), QPoint(0,10), QPoint(-2,0)}; static QPoint min[4] = {QPoint(0, -60), QPoint(4,0), QPoint(0,12), QPoint(-4,0)}; static QPoint hour[4] = {QPoint(0, -50), QPoint(6,0), QPoint(0,13), QPoint(-6,0)}; class Clock : public QMainWindow { Q_OBJECT public: Clock(QWidget *parent = 0); ~Clock(); protected: void paintEvent(QPaintEvent *); }; #endif // CLOCK_H
#include "clock.h" Clock::Clock(QWidget *parent) : QMainWindow(parent) { QTimer *timer = new QTimer(this); timer->start(1000); connect(timer, SIGNAL(timeout()), this, SLOT(update())); resize(200, 200); } Clock::~Clock() { } void Clock::paintEvent(QPaintEvent *) { QPainter paint(this); QTime time = QTime::currentTime(); paint.translate(100,100); //paint.drawLine(0,0,100,100); paint.setRenderHint(QPainter::Antialiasing); paint.setPen(QPen(Qt::black,0.5,Qt::DashLine)); paint.setBrush(QBrush(Qt::white,Qt::SolidPattern));//設定畫刷形式 paint.drawEllipse(-100,-100,200,200); paint.setBrush(Qt::red); paint.setPen(Qt::red); paint.save(); paint.rotate(6.0*time.second()); paint.drawConvexPolygon(sed, 4); paint.restore(); paint.setBrush(Qt::blue); paint.setPen(Qt::blue); paint.save(); paint.rotate(6.0*time.minute()+time.second()/60.0); paint.drawConvexPolygon(min, 4); paint.restore(); paint.setBrush(Qt::black); paint.setPen(Qt::black); paint.save(); paint.rotate(30.0*time.hour()+time.minute()/60.0); paint.drawConvexPolygon(hour, 4); paint.restore(); int i; for(i = 0; i < 12; i++) { paint.rotate(30); paint.drawLine(0,-98,0,-88); } for(i = 0; i < 60; i++) { paint.rotate(6); paint.drawLine(0,-98,0,-95); } }
#include <QtGui/QApplication>
#include "clock.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Clock w;
w.show();
return a.exec();
}