xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 30KB
    文件類型: .tar
    金幣: 1
    下載: 0 次
    發布日期: 2024-02-02
  • 語言: 其他
  • 標簽: Qt??

資源簡介

這是一個比Qt學習書上例子更精進的Demo,用Qt繪制一個時鐘,添加了秒針功能。

資源截圖

代碼片段和文件信息

#include?“clock.h“
#include?
#include?
#include?
#include?
#include?
#include?

Clock::Clock(QWidget?*parent)
????:?QWidget(parent)
{
????QTimer?*timer?=?new?QTimer(this);???//聲明一個定時器
????//update()會自動產生重繪消息,調用paintEvent()
????connect(timer?SIGNAL(timeout())?this?SLOT(update()));??//連接信號槽,定時器超時觸發窗體更新
????timer->start(1000);???//啟動定時器
????setWindowtitle(tr(“My?Clock“));??//設置窗體名稱
????resize(300?300);??//設置窗體大小
}

Clock::~Clock()
{

}

void?Clock::paintEvent(QPaintEvent?*event)
{
????//下面三個數組用來定義表針的三個頂點,以便后面的填充
????static?const?QPoint?hourHand[3]?=?{
????????QPoint(3?8)
????????QPoint(-3?8)
????????QPoint(0?-40)
????};
????static?const?QPoint?minuteHand[3]?=?{
????????QPoint(3?8)
????????QPoint(-3?8)
????????QPoint(0?-70)
????};
????static?const?QPoint?secondHand[3]?=?{
????????QPoint(3?8)
????????QPoint(-3?8)
????????QPoint(0?-90)
????};//秒針
????//填充表針的顏色
????QColor?hourColor(127?0?127);??//分針顏色(第四個表示不透明度)
????QColor?minuteColor(0?127?127?191);
????QColor?secondColor(127?127?0?127);

????int?side?=?qMin(width()?height());??//繪制的范圍(寬、高中最小值)
????QTime?time?=?QTime::currentTime();???//獲取當前的時間
????QPainter?painter(this);??????????????//聲明用來繪圖用的painter

????painter.setRenderHint(QPainter::Antialiasing);//繪制的圖像反鋸齒
????painter.translate(width()?/?2?height()?/?2);//重新定位坐標起始點,把坐標原點放到窗體的中央
????painter.scale(side?/?300.0?side?/?300.0);//設定畫布的邊界用窗體寬高的最小值來計算時鐘的大小,防止窗體拉伸導致的時鐘變形以及顯示不全

????painter.setPen(Qt::red);???//填充時針,不需要邊線所以NoPen
????QString?timeStr=?QTime::currentTime().toString();?????//繪制當前的時間
????painter.drawText(-40308030Qt::AlignHCenter?|?Qt::AlignTop?timeStr);

????painter.setPen(Qt::NoPen);???//填充時針,不需要邊線所以NoPen
????painter.setBrush(hourColor);??//畫刷顏色設定
????painter.save();??//保存painter的狀態,保存的是當前的坐標狀態,如果不保存,畫完之后坐標以改變不方便畫下一個
????painter.rotate(30.0?*?((time.hour()?+?time.minute()?/?60.0)));?//將painter(的”視角“)根據時間參數轉移(30°?*?(小時?+?分鐘?/?60))
????painter.drawConvexPolygon(hourHand?3);??//填充時針的區域
????painter.restore();

????painter.setPen(hourColor);????//下面畫表示小時的刻度,此時要用到畫筆(因為要劃線)
????for?(int?i?=?0;?i?????????painter.drawLine(0?-88?0?-96);?????//寫上刻度數字
????????if?(i?==?0)??painter.drawText(-10-882020Qt::AlignHCenter?|?Qt::AlignTopQString::number(12));
????????else??painter.drawText(-10-882020Qt::AlignHCenter?|?Qt::AlignTopQString::number(i));
????????painter.rotate(30.0);
????}
????//后面的跟前面的類似,分別繪制了分針和秒針,及相應的刻度
????painter.setPen(Qt::NoPen);
????painter.setBrush(minuteColor);
????painter.save();
????painter.rotate(6.0?*?(time.minute()?+?time.second()?/?60.0));??//設旋轉(角度?=?6°?*?(分鐘?+?秒?/?60))
????painter.drawConvexPolygon(minuteHand?3);??//填充分針部分
????painter.restore();

????painter.setPen(minuteColor);
????for?(int?j?=?0;?j?????????if?((j?%?5)?!=?0)???????????//判斷是否能被5整除(能被5整除表示是正點刻度,暫不繪制)
????????????painter.drawLine(0?-92?0?-96);??//不是正點刻度,繪制長4個像素的直線
????????painter.rotate(6.0);???//循

評論

共有 條評論