文章包括如下內容:
1.用pen繪製一條直線
2.用push繪製乙個實心矩形
3.繪製橫版文字和豎版文字
4.繪製乙個帶座標系的方波影象
(推薦真正用到的時候再查,否則容易忘。)
一、繪製直線
1.新建工程
基類型別選擇qwidget
2.修改.**件
引入標頭檔案qpainter
繼承乙個虛函式 void paintevent(qpaintevent *);
具體**如下:
#ifndef widget_h
#define widget_h
#include
#include
namespace ui
class
widget
:public qwidget
;#endif
// widget_h
3.修改widget.cpp檔案給繼承過來的虛函式 void paintevent(qpaintevent *);新增定義。
新建乙個qpainter變數,設定pen,並在(100,100)和(200,200)之間畫一條紅色的直線。
具體**如下:
#include
"widget.h"
#include
"ui_widget.h"
widget::
widget
(qwidget *parent)
:qwidget
(parent),ui
(new ui::widget)
widget::
~widget()
//繪製函式
void widget::
paintevent
(qpaintevent *
)
效果如下:
pen不止可以設定顏色,還可以設定粗細等許多屬性。
二、繪製實心矩形
1.修改widget.cpp檔案
qcolor的引數為rgba,分別為紅綠藍和透明度,取值為0-255。
下面用brush畫兩個不同透明度的黃色矩形顯示效果。
**如下:
void widget::
paintevent
(qpaintevent *
)
效果如下:
三、繪製文字
1.修改widget.cpp檔案
修改繪製函式,通過對pen的設定可以改變字型的顏色。
通過對font的設定可以修改字型,字型大小,上下劃線,字間距,斜體,粗體……
下面寫乙個宋體,20號,紅色的 「啊?」在(30,30)處。
**如下:
void widget::
paintevent
(qpaintevent *
)
效果如下:
2.繪製豎版的文字
**如下:
void widget::
paintevent
(qpaintevent *
)
這裡使用了painter.rotate(90);函式,其作用是順時針旋轉座標系90度,這時如果還想再原座標系的(30,30)繪製,現在就需要改為(30,-30)了。
(注意旋轉的是座標系,如果想回到原來座標系,需要再轉270)
效果如下:
四、繪製帶座標系的方波影象
1.修改widget.cpp檔案
具體思路為繪製兩條直線當作座標軸,然後加上座標軸的名和分度值,然後繪製乙個方波影象。座標軸名和分度值放置的具體位置可以自己多次換數最終得到乙個合適的值。
具體**如下:
void widget::
paintevent
(qpaintevent *
)int x=20;
while
(x<
200)
//方波影象
int x1=
20,y1=
100,h1=
50,w1=
10,t1=20;
pen.
setcolor
(qcolor(0
,255,0
)); pen.
setwidth(3
);painter.
setpen
(pen)
;for
(int i=
0;i<
8;i++
)}
QT通過點選獲得帶滾動條介面的座標(QT系列9)
獲得帶滾動條介面的座標前提知識為 1.滑鼠事件qt鍵盤滑鼠事件 2.新建帶滾動條介面qt新建帶滾動條介面的兩種方式 獲得帶滾條介面的座標與獲得主介面座標的區別,就在於我們需要獲得滾動條滑過的距離,並通過這個距離實現座標系的變換。1.新建工程 基類型別選擇為qwidget 在ui介面拖入乙個pushb...
Canvas 繪製座標系中的點以及折線
示例圖如下 可以看到這裡繪畫的座標點比較大,為了更好看一些。其實不管大小,基本的繪製步驟如下 設定座標點的中心圓點位置 x0,y0 設定座標點的大小 dotsize 計算座標點的上下左右四角的點座標 條件1和2可以直接通過設定獲取,而座標點上下左右四角座標看看下面的計算示意圖。從上圖可以看到要繪製乙...
QT中通過橫縱座標獲取單元格資料
通過構建索引的方法獲取某行某列的資料 qstandarditemmodel index rowcount,columncount data tostring 更改某行某列的資料 通過構建索引的形式獲取指向某行某列單元格的位址的qstandarditem 指標,然後直接set qstandardite...