自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Qt 編程點滴 初學(xué)者必看 (7)

移動開發(fā)
本文介紹的是Qt 編程點滴,作為一名新手,我建議必須看一看。編程那些事,只有編程人員自己明白!所以推薦本文。

Qt 編程繼續(xù)為大家講解,還是接著文章 Qt 編程點滴 初學(xué)者必看 (6) ,繼續(xù)介紹,說編程那些細節(jié)。由于本話題是一節(jié)一節(jié)為大家介紹的,所以更多內(nèi)容請看末尾編輯推薦。本文基本是用代碼實現(xiàn)的效果,所以并沒有太多的內(nèi)容。

QPainterPath 畫出的圖形會閃爍的問題:

用下面的寫法畫出的圖形會閃爍

  1. class MyClass: public QWidget  
  2. {  
  3. public:  
  4.   MyClass(QWidget*);  
  5. private:  
  6.     QPainterPath* route;  
  7.     void paintEvent(QPaintEvent*e);  
  8. };  
  9. MyClass::MyClass()  
  10. {  
  11.   route = new QPainterPath();  
  12. }  
  13. void MyClass::paintEvent( QPaintEvent*e)  
  14. {  
  15.     QPainter *painter = new QPainter(this);  
  16.     //畫校正圖形  
  17.     int insideR = 30;  
  18.     int outsideR = 50;  
  19.     QColor insideColor(237,29,12); //內(nèi)圓線條顏色  
  20.     QColor outSideColor(237,29,12); //外圓線條顏色  
  21.     QColor lineColor(237,29,12); //直線顏色  
  22.     QColor insideBrushColor(255,0,0,25);//內(nèi)圓畫刷顏色,最后的參數(shù)代表透明度( 0(完全透明)-100(不透明) )  
  23.     QColor outsideBrushColor(255,0,0,50);//外圓畫刷顏色,最后的參數(shù)代表透明度( 0(完全透明)-100(不透明) )  
  24.  
  25.     //QPainterPath path;  
  26.     route->moveTo(insideR,0);  
  27.     route->lineTo(outsideR,0);  
  28.     route->arcTo(0-outsideR,0-outsideR,outsideR*2,outsideR*2,0,180);  
  29.     route->lineTo(0-insideR,0);  
  30.     route->arcTo(0-insideR,0-insideR,insideR*2,insideR*2,0,180);  
  31.     route->moveTo(0-insideR,0);  
  32.     route->lineTo(0-outsideR,0);  
  33.     route->arcTo(0-outsideR,0-outsideR,outsideR*2,outsideR*2,180,180);  
  34.     route->lineTo(insideR,0);  
  35.     route->arcTo(0-insideR,0-insideR,insideR*2,insideR*2,180,180);  
  36.     painter->setPen(Qt::NoPen);  
  37.     painter->setBrush(outsideBrushColor);  
  38.     painter->drawPath(*route);  
  39.  
  40.     painter->setBrush(Qt::NoBrush);  
  41.     painter->setPen(outSideColor);  
  42.     painter->drawEllipse( QPointF(0,0),outsideR,outsideR );  
  43.     painter->setBrush(insideBrushColor);  
  44.     painter->setPen(insideColor);  
  45.     painter->drawEllipse( QPointF(0,0),insideR,insideR );  
  46.     painter->setPen(lineColor);  
  47.     QPoint p1(0,  0- outsideR - 10  );  
  48.     QPoint p2(0,  outsideR + 10  );  
  49.     painter->drawLine(p1,p2);  
  50.     painter->rotate(90);  
  51.     painter->drawLine(p1,p2);  
  52.     painter->rotate(-90);  
  53.     delete painter;  

如下用下面的寫法則不會閃爍:

  1. void MyClass::paintEvent( QPaintEvent*e)  
  2. {  
  3.     QPainter *painter = new QPainter(this);  
  4.     //畫校正圖形  
  5.     int insideR = 30;  
  6.     int outsideR = 50;  
  7.     QColor insideColor(237,29,12); //內(nèi)圓線條顏色  
  8.     QColor outSideColor(237,29,12); //外圓線條顏色  
  9.     QColor lineColor(237,29,12); //直線顏色  
  10.     QColor insideBrushColor(255,0,0,25);//內(nèi)圓畫刷顏色,最后的參數(shù)代表透明度( 0(完全透明)-100(不透明) )  
  11.     QColor outsideBrushColor(255,0,0,50);//外圓畫刷顏色,最后的參數(shù)代表透明度( 0(完全透明)-100(不透明) )  
  12.     QPainterPath path;  
  13.     path.moveTo(insideR,0);  
  14.     path.lineTo(outsideR,0);  
  15.     path.arcTo(0-outsideR,0-outsideR,outsideR*2,outsideR*2,0,180);  
  16.     path.lineTo(0-insideR,0);  
  17.     path.arcTo(0-insideR,0-insideR,insideR*2,insideR*2,0,180);  
  18.     path.moveTo(0-insideR,0);  
  19.     path.lineTo(0-outsideR,0);  
  20.     path.arcTo(0-outsideR,0-outsideR,outsideR*2,outsideR*2,180,180);  
  21.     path.lineTo(insideR,0);  
  22.     path.arcTo(0-insideR,0-insideR,insideR*2,insideR*2,180,180);  
  23.     painter->setPen(Qt::NoPen);  
  24.     painter->setBrush(outsideBrushColor);  
  25.     painter->drawPath(path);  
  26.     painter->setBrush(Qt::NoBrush);  
  27.     painter->setPen(outSideColor);  
  28.     painter->drawEllipse( QPointF(0,0),outsideR,outsideR );  
  29.     painter->setBrush(insideBrushColor);  
  30.     painter->setPen(insideColor);  
  31.     painter->drawEllipse( QPointF(0,0),insideR,insideR );  
  32.     painter->setPen(lineColor);  
  33.     QPoint p1(0,  0- outsideR - 10  );  
  34.     QPoint p2(0,  outsideR + 10  );  
  35.     painter->drawLine(p1,p2);  
  36.     painter->rotate(90);  
  37.     painter->drawLine(p1,p2);  
  38.     painter->rotate(-90);  
  39.     delete painter;  

小結(jié):本文主要介紹了在Qt 窗體的使用,通過Qt 編程點滴介紹,也給自己提高了編程過程中需要注意的細節(jié)問題,由于本話題是一節(jié)一節(jié)為大家展現(xiàn)的,所以更多內(nèi)容,請看編輯推薦。

責(zé)任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-06-17 15:19:28

Qt

2011-06-17 15:44:25

Qt

2011-06-17 15:37:42

Qt

2011-06-17 14:54:31

Qt

2011-06-17 14:41:56

Qt

2011-06-17 14:29:55

Qt

2011-06-17 15:32:28

Qt

2011-06-17 14:12:32

Qt

2011-06-17 15:06:14

Qt

2011-06-27 14:56:46

Qt Designer

2011-09-16 09:38:19

Emacs

2011-09-08 10:38:37

Widget

2013-04-23 10:51:15

Linux壓縮

2011-08-24 17:05:01

Lua

2009-11-17 15:33:26

PHP數(shù)組元素

2009-10-22 16:46:03

VB.NET初步知識

2011-07-26 17:55:16

iPhone Runtime

2011-08-04 18:01:07

IOS Cocoa Touc

2009-10-29 09:19:59

ADO.NET

2011-08-30 11:23:16

無線網(wǎng)卡怎么用無線網(wǎng)卡無線上網(wǎng)卡
點贊
收藏

51CTO技術(shù)棧公眾號