日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Qt开发入门

發(fā)布時(shí)間:2023/12/31 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt开发入门 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Qt的初步研究

目錄

一、Qt基本情況的介紹... 3

1、歷史... 3

2、基本介紹... 3

二、Qt開(kāi)發(fā)準(zhǔn)備... 4

1、Qt的開(kāi)發(fā)環(huán)境及搭建... 4

1.1、開(kāi)發(fā)環(huán)境... 4

1.2、Qt Library + Qt Creator. 4

1.2.1、安裝包... 4

1.2.2、安裝... 5

1.2.3、配置... 6

1.2.4、新建項(xiàng)目... 13

1.2.5、編譯測(cè)試... 17

1.3、VS+Qt插件(還有問(wèn)題沒(méi)解決)... 17

1.3.1、安裝包... 17

1.3.2、安裝... 18

1.3.3、配置... 18

1.3.4、新建項(xiàng)目... 22

1.3.5、編譯測(cè)試(編譯沒(méi)通過(guò),可能配置不正確)... 24

1.4、小結(jié)... 26

2、系統(tǒng)庫(kù)的使用及程序發(fā)布... 26

2.1、系統(tǒng)API的使用... 26

2.2、庫(kù)的添加... 27

2.2.1、只對(duì)本項(xiàng)目起作用的庫(kù)的添加... 27

2.2.2、公共庫(kù)的添加(測(cè)試沒(méi)通過(guò))... 30

2.3、靜態(tài)編譯與動(dòng)態(tài)編譯(靜態(tài)編譯沒(méi)實(shí)踐檢驗(yàn))... 31

3、靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)... 31

3.1、靜態(tài)庫(kù)的創(chuàng)建和使用... 32

3.1.1、靜態(tài)庫(kù)的創(chuàng)建... 32

3.1.2、靜態(tài)庫(kù)的使用... 36

3.2、動(dòng)態(tài)庫(kù)的創(chuàng)建和使用... 39

3.2.1、動(dòng)態(tài)庫(kù)的創(chuàng)建... 39

3.2.2、動(dòng)態(tài)庫(kù)的使用... 41

3.3、小結(jié)... 43

4、Qt程序的跨平臺(tái)移植... 44

4.1、Qt的跨平臺(tái)... 44

4.2、移植方法... 44

4.3、移植時(shí)應(yīng)注意的問(wèn)題... 44

5、版本不兼容常見(jiàn)問(wèn)題... 45

三、Qt界面庫(kù)基本的開(kāi)發(fā)過(guò)程,基本的控件... 45

1、????? helloworld例子... 46

2、可視化編程介紹... 52

3、常用控件的常見(jiàn)接口... 54

1.1、Layouts和spacers. 54

1.2、label ----靜態(tài)文本框... 55

1.3、PushButton----按鈕... 55

1.4、CheckBox----復(fù)選框... 56

1.5、listWidget----列表... 56

1.6、tableWidget----表格... 57

1.7、treeWidget----樹(shù)... 57

1.8、progressBar----進(jìn)度條... 58

1.9、comboBox----組合下拉框... 59

1.10 QmessageBox----消息提示盒... 59

1.11 QFileDialog----文件選擇框... 61

1.12 QSystemTrayIcon----托盤(pán)類(lèi)... 63

1.13 QThread----線程類(lèi)... 63

1.14 線程和信號(hào)-槽用法舉例... 64

四、QtWebkit的使用... 65

?

?

一、Qt基本情況的介紹

1、歷史

HaavardNord和Eirik Chambe-Eng于1991年開(kāi)始開(kāi)發(fā)"Qt",1994年3月4日創(chuàng)立公司,最早名為Quasar Technologies,然后更名為T(mén)roll Tech,然后再改為T(mén)rolltech,中文名是“奇趣科技”,2008年6月17日被NOKIA公司收購(gòu),以增強(qiáng)該公司在跨平臺(tái)軟件研發(fā)方面的實(shí)力,更名Qt Software。

該工具包名為Qt是因?yàn)樽帜窺在Haavard的Emacs字體特別漂亮,而“t”代表“toolkit”,靈感來(lái)自Xt,X toolkit。

2009年5月11日,諾基亞Qt Software宣布Qt源代碼管理系統(tǒng)面向公眾開(kāi)放,Qt開(kāi)發(fā)人員可通過(guò)為Qt以及與 Qt相關(guān)的項(xiàng)目貢獻(xiàn)代碼、翻譯、示例以及其他內(nèi)容,協(xié)助引導(dǎo)和塑造Qt未來(lái)的發(fā)展。為了便于這些內(nèi)容的管理,Qt Software啟用了基于Git和Gitorious開(kāi)源項(xiàng)目的Web源代碼管理系統(tǒng)。

在推出開(kāi)放式Qt代碼庫(kù)的同時(shí),Qt Software在其網(wǎng)站發(fā)布了其產(chǎn)品規(guī)劃(Roadmap)。其中概述了研發(fā)項(xiàng)目中的最新功能,展現(xiàn)了現(xiàn)階段對(duì)Qt 未來(lái)發(fā)展方向的觀點(diǎn),以期鼓勵(lì)社區(qū)提供反饋和貢獻(xiàn)代碼,共同引導(dǎo)和塑造Qt的未來(lái)。 2012年8月9日,Digia宣布已完成對(duì)諾基亞Qt業(yè)務(wù)及軟件技術(shù)的全面收購(gòu),并計(jì)劃將Qt應(yīng)用到Android、iOS及Windows 8平臺(tái)上。

2、基本介紹

平臺(tái)的C++應(yīng)用程序開(kāi)發(fā)框架。廣泛用于開(kāi)發(fā)GUI程序,這種情況下又被稱為部件工具箱。也可用于開(kāi)發(fā)非GUI程序,比如控制臺(tái)工具和服務(wù)器。Qt使用于OPIE、Skype、VLC mediaplayer、Adobe Photoshop Elements、VirtualBox 與 Mathematica以及被Autodesk、歐洲空間局、夢(mèng)工廠、Google、HP、KDE、盧卡斯影業(yè)、西門(mén)子公司、富豪集團(tuán), 華特迪士尼動(dòng)畫(huà)制作公司、三星集團(tuán)、飛利浦、Panasonic所使用。

它是諾基亞(Nokia)的Qt Development Frameworks部門(mén)的產(chǎn)品。Qt使用標(biāo)準(zhǔn)的C++。通過(guò)語(yǔ)言綁定,其他的編程語(yǔ)言也可以使用Qt。

Qt是自由且開(kāi)放源代碼的軟件,在GNU較寬松公共許可證條款下發(fā)布。所有版本都支持廣泛的編譯器,包括GCC的C++編譯器和Visual Studio。

?

維基百科:http://zh.wikipedia.org/zh-cn/Qt

淺析 Qt 界面庫(kù):http://mobile.51cto.com/symbian-270393.htm

Qt官網(wǎng):http://qt.digia.com/

http://download.qt-project.org/archive/

Qt 項(xiàng)目:http://qt-project.org

Qt開(kāi)發(fā)者社區(qū):http://qt.csdn.net/

二、Qt開(kāi)發(fā)準(zhǔn)備

本部分是基于Qt5.0,1進(jìn)行研究的,期間會(huì)偶有提及Qt5.0.2的一些功能更新。

1、Qt的開(kāi)發(fā)環(huán)境及搭建

1.1、開(kāi)發(fā)環(huán)境

?(1)各平臺(tái)常用開(kāi)發(fā)環(huán)境

1、windows: QtLibrary + Qt Creator

QtLibrary + VS200X(X = 5,8,10…)

2、linux:? Qt Library + Qt Creator

3、mac:??? Qt Library + Qt Creator

?

(2) Qt Library是一個(gè)Qt庫(kù),包含編譯器,各種鏈接庫(kù)。

(3) Qt Creator 是一款跨平臺(tái)的集成開(kāi)發(fā)環(huán)境(Qt IDE),特別針對(duì)Qt開(kāi)發(fā)者,是Qt SDK組成的一部分,可運(yùn)行于Windows, Linux/X11 and Mac OS X等桌面操作系統(tǒng),允許開(kāi)發(fā)者為多桌面環(huán)境及移動(dòng)設(shè)備平臺(tái)創(chuàng)建應(yīng)用程序。它包括一個(gè)可視化偵錯(cuò)工具和整合的 GUI 版面和外形設(shè)計(jì)師。這個(gè)編輯器的功能包括語(yǔ)法高亮度顯示和自動(dòng)完成。Qt Creator 在 Linux 上,使用 GCC 的 C++ 編譯器。在 Windows,默認(rèn)安裝它可以使用 MinGW 或 MSVC。從源代碼編譯時(shí),也可以使用 cdb。

?

Qt Library + VS200X對(duì)VS老用戶用起來(lái)更順手,Qt Library + Qt Creator更適合跨平臺(tái)開(kāi)發(fā),因?yàn)镼t Creator就是一個(gè)跨平臺(tái)的開(kāi)發(fā)工具。

?

1.2、Qt Library + QtCreator

1.2.1、安裝包

(1)常用系統(tǒng)對(duì)應(yīng)的安裝包

集成包:(QtLibrary + Qt Creator)

·????????Linux 32-bit:Qt 5.0.1 for Linux 32-bit (388 MB)???

·????????Linux 64-bit:Qt 5.0.1 for Linux 64-bit (388 MB)

·????????Mac 64-bit: Qt 5.0.1 for Mac (398 MB)

·????????Mac 32-bit: Mac OS X 10.0以后的系統(tǒng)均為64bit的,Qt 5.0.1沒(méi)有32bit

·????????Win32:Qt 5.0.1 for Windows 32-bit (MinGW 4.7,823 MB)

·????????Win32:Qt 5.0.1 for Windows 32-bit (VS 2010, 481MB)

Win64:5.0.2開(kāi)始發(fā)布64bit版本Qt 5.0.2 for Windows 64-bit (VS 2012, 500 MB)

?

以上是時(shí)至2013年4月2日最新的Qt安裝包,想了解最新安裝包信息請(qǐng)到http://qt-project.org/downloads 查看。

4月11日發(fā)布了5.0.2版本,增加了兩個(gè)安裝包:

·????????Qt5.0.2 for Windows 32-bit (VS 2010, OpenGL, 476 MB)?

·????????Qt5.0.2 for Windows 64-bit (VS 2012, 500 MB)?

?

(2)關(guān)于安裝包的說(shuō)明

1、選包建議

建議多少位的系統(tǒng)就安裝多少位的安裝包,要開(kāi)發(fā)多少位的程序就在多少位的系統(tǒng)上開(kāi)發(fā),這也有利于程序的調(diào)試。Qt Creator的宗旨就是方便跨平臺(tái)和跨系統(tǒng),所以程序從32位遷移到64位也應(yīng)當(dāng)不會(huì)很復(fù)雜,大概是源代碼的重新編譯吧。(詳細(xì)報(bào)告見(jiàn)《Qt安裝及編譯測(cè)試錯(cuò)誤報(bào)告4_12.docx》)

2、win32下MinGW包和Msvc包的區(qū)別

MinGW(Minimalist GNU for Windows),又稱mingw32,是將GCC編譯器和GNUBinutils移植到Win32平臺(tái)下的產(chǎn)物,包括一系列頭文件(Win32API)、庫(kù)和可執(zhí)行文件。另有mingw64系列工具,是用于產(chǎn)生64位Windows可執(zhí)行文件的GNU交叉編譯器。對(duì)于C語(yǔ)言之外的語(yǔ)言,MinGW使用標(biāo)準(zhǔn)的GNU運(yùn)行庫(kù),如C++使用GNU libstdc++。但是MinGW使用Windows中的C運(yùn)行庫(kù)。因此用MinGW開(kāi)發(fā)的程序不需要額外的第三方DLL支持就可以直接在Windows下運(yùn)行,而且也不一定必須遵從GPL許可證。這同時(shí)造成了MinGW開(kāi)發(fā)的程序只能使用Win32API和跨平臺(tái)的第三方庫(kù),而缺少POSIX支持,大多數(shù)GNU軟件無(wú)法在不修改源代碼的情況下用MinGW編譯。

Msvc:Microsoft Visual C++的簡(jiǎn)稱。

MinGW安裝包自帶MinGW 32bit編譯器,對(duì)系統(tǒng)的依賴程度較低;Msvc包不帶編譯器,使用的是MSVC編譯器,要求系統(tǒng)安裝VS2010或以上版本,安裝包較小。所以這兩個(gè)安裝包使用的編譯器是不一樣的,也可能導(dǎo)致語(yǔ)法等存在一定的差異,暫無(wú)優(yōu)劣之分,看個(gè)人情況而定。

1.2.2、安裝

(1)安裝步驟

1、運(yùn)行安裝包。直接雙擊安裝包即可,在linux下雙擊安裝包有時(shí)可能沒(méi)響應(yīng),那是因?yàn)榘惭b包沒(méi)運(yùn)行權(quán)限,可以通過(guò)下面的方法獲取運(yùn)行權(quán)限:

在終端輸入以下命令:(假設(shè)安裝包在桌面,XXX為安裝包名稱)

cd Desktop?????? //進(jìn)入文件目錄

chmod +x XXX.run??? //修改權(quán)限,chmod是加權(quán)限命令,+ 表示增加權(quán)限,x 表示可執(zhí)行

2、在彈出的安裝引導(dǎo)中選擇“next”,選擇安裝路徑后選“next”。

3、在“組件選擇”中可以選擇性安裝你需要的組件,選中組件時(shí)右邊會(huì)有說(shuō)明,默認(rèn)選項(xiàng)可以滿足正常開(kāi)發(fā)需求,但為了不時(shí)之需,可以全選。選好后點(diǎn)擊“next”。

4、在“許可協(xié)議”中主要說(shuō)明一些協(xié)議,同意后選“next”,在新界面中選擇創(chuàng)建快捷鍵的位置,然后一直選“next”,直到完成。

?

(2)Qt Creator各包安裝情況:

32bit安裝裝包

64bit安裝包

VS200X插件

 

MinGW

MSVC

 

 

windows32

安裝成功

安裝成功

 新發(fā)布沒(méi)嘗試

安裝成功

windows64

暫無(wú)條件測(cè)試

暫無(wú)條件測(cè)試

暫無(wú)條件測(cè)試

暫無(wú)條件測(cè)試

linux32

安裝成功

沒(méi)嘗試

無(wú)

linux64

不成功

安裝成功

無(wú)

mac

無(wú)

安裝成功

無(wú)

1.2.3、配置

在一般情況下,Qt Creator會(huì)按默認(rèn)配置好,但有時(shí)可能需要我們做一些手動(dòng)配置,下面講解一下幾個(gè)常見(jiàn)配置(各平臺(tái)上Qt Creator的界面及用法是一樣的,此處以Qt Creator2.6.2(win32中文版)為例進(jìn)行說(shuō)明):

(1)“Qt 版本”與“編譯器”的配置

兩者的添加方法基本相同,不同的是“Qt版本”添加的是“qmake.exe”的路徑,“編譯器”添加的是編譯器(gcc.exe,vcvarsall)路徑。下面以添加“編譯器”為例:

1、在頂部菜單欄選擇“工具”->“選項(xiàng)”:

?

2、選擇“構(gòu)建和運(yùn)行”->“編譯器”,在右邊的“添加”中選擇要添加的編譯器類(lèi)型;

3、通過(guò)編譯器路徑后面的“瀏覽”按鈕,找到“編譯器文件(如gcc.exe)”,打開(kāi);

4、在“手動(dòng)設(shè)置”下面會(huì)看到新增的編譯器名稱(可自己命名),在編譯器路徑里可以看到新增的編譯器所在路徑,點(diǎn)擊“應(yīng)用”完成添加。

?

(2)調(diào)試器的配置

在linux和mac上,Qt Creator可以自動(dòng)檢測(cè)到合適的調(diào)試器(應(yīng)該是安裝包綁定的),但在windows上,Qt Creator默認(rèn)是不適用調(diào)試器的,需要手動(dòng)配置,而且mingw與msvc的調(diào)試器也似乎是不匹配的(測(cè)試結(jié)果:msvc用mingw調(diào)試器時(shí)斷點(diǎn)處沒(méi)停也查看不到值的變化; mingw用msvc調(diào)試器時(shí)運(yùn)行得很慢很慢很慢),手動(dòng)配置如下:

1、mingw-32bit

a、在調(diào)試器后面的“管理”選擇“編輯”

?

b、選擇“GDB”,點(diǎn)擊“瀏覽”

?

C、找到“gdb.exe”,文件路徑為“…\MinQt5.0.1\Tools\MinGW\bin”

?

d、“確定”->“應(yīng)用”。

?

2、msvc-32bit

a、? 自身不帶有調(diào)試器,需要到網(wǎng)上下載:(windbg)

http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools/dbg_x86.msi?

?

b、? 安裝“WinDbg”后,點(diǎn)擊“管理”->“自動(dòng)檢測(cè)”即可,如無(wú)法檢測(cè)到,也可按mingw的步驟手動(dòng)添加。

?

(3)“構(gòu)建套件(Kit)”的配置

1、在頂部菜單欄選擇“工具”->“選項(xiàng)”:

?

2、選擇“構(gòu)建和運(yùn)行”->“構(gòu)建套件(Kit)”,Qt Creator會(huì)自動(dòng)檢測(cè)到安裝包自帶的默認(rèn)套件

3、可以通過(guò)右邊的“添加”來(lái)創(chuàng)建自己想要的Kit。在“名稱”項(xiàng)命名,命名沒(méi)特殊要求,最好能體現(xiàn)該“kit”的屬性;在“編譯器”和“Qt版本”中選擇自己需要的選項(xiàng);在“設(shè)備類(lèi)型”選擇程序運(yùn)行的設(shè)備,電腦上一般默認(rèn)“桌面”。不匹配時(shí)會(huì)有或 錯(cuò)誤提醒和警告,添加的“kit”會(huì)在“手動(dòng)設(shè)置”顯示??梢酝ㄟ^(guò)“設(shè)為默認(rèn)”把其中某個(gè)“kit”設(shè)為默認(rèn),設(shè)為默認(rèn)后,在打開(kāi)工程和修改工程“kit”時(shí)會(huì)自動(dòng)勾選。

?

4、新建項(xiàng)目時(shí),根據(jù)需要選擇相應(yīng)的“Kit”,默認(rèn)情況下為全選。

?

5、查看工程使用的“Kit”。把鼠標(biāo)移至或點(diǎn)擊界面左下角的電腦圖標(biāo)

?

6、修改項(xiàng)目的“Kit”。

A、點(diǎn)擊左側(cè)菜單中的“項(xiàng)目”,選擇“構(gòu)建和運(yùn)行”,點(diǎn)擊“-”減號(hào)刪除當(dāng)前“Kit”:

?

B、在彈出的窗口下選擇新“kit”,點(diǎn)擊“配置項(xiàng)目”即可。

1.2.4、新建項(xiàng)目

(1)點(diǎn)擊“create Project”

?

(2)選擇項(xiàng)目及應(yīng)用類(lèi)型

?

(3)項(xiàng)目命名,指定創(chuàng)建路徑,注意路徑不要出現(xiàn)中文

?

(4)選擇構(gòu)建套件,可根據(jù)需要勾選,默認(rèn)為全選

?

(5)選擇基類(lèi)類(lèi)型,“下一步”->“完成”

QT中QWidget、QDialog及QMainWindow的區(qū)別(來(lái)源:http://www.cnblogs.com/aqxin/archive/2011/05/23/2054156.html

QWidget類(lèi)是所有用戶界面對(duì)象的基類(lèi)。 窗口部件是用戶界面的一個(gè)基本單元:它從窗口系統(tǒng)接收鼠標(biāo)、鍵盤(pán)和其它事件,并且在屏幕上繪制自己。每一個(gè)窗口部件都是矩形的,并且它們按Z軸順序排列。一個(gè)窗口部件可以被它的父窗口部件或者它前面的窗口部件蓋住一部分。

???QMainWindow 類(lèi)提供一個(gè)有菜單條、錨接窗口(例如工具條)和一個(gè)狀態(tài)條的主應(yīng)用程序窗口。主窗口通常用在提供一個(gè)大的中央窗口部件(例如文本編輯或者繪制畫(huà)布)以及周?chē)藛巍⒐ぞ邨l和一個(gè)狀態(tài)條。QMainWindow常常被繼承,因?yàn)檫@使得封裝中央部件、菜單和工具條以及窗口狀態(tài)條變得更容易,當(dāng)用戶點(diǎn)擊菜單項(xiàng)或者工具條按鈕時(shí),槽會(huì)被調(diào)用。

???QDialog類(lèi)是對(duì)話框窗口的基類(lèi)。對(duì)話框窗口是主要用于短期任務(wù)以及和用戶進(jìn)行簡(jiǎn)要通訊的頂級(jí)窗口。QDialog可以是模態(tài)對(duì)話框也可以是非模態(tài)對(duì)話框。QDialog支持?jǐn)U展性并且可以提供返回值。它們可以有默認(rèn)按鈕。QDialog也可以有一個(gè)QSizeGrip在它的右下角,使用setSizeGripEnabled()。

???QDialog 是最普通的頂級(jí)窗口。一個(gè)不會(huì)被嵌入到父窗口部件的窗口部件叫做頂級(jí)窗口部件。通常情況下,頂級(jí)窗口部件是有框架和標(biāo)題欄的窗口(盡管使用了一定的窗口部件標(biāo)記,創(chuàng)建頂級(jí)窗口部件時(shí)也可能沒(méi)有這些裝飾。)在Qt中,QMainWindow和不同的QDialog的子類(lèi)是最普通的頂級(jí)窗口。

??? 如果是頂級(jí)對(duì)話框,那就基于QDialog創(chuàng)建,如果是主窗體,那就基于QMainWindow,如果不確定,或者有可能作為頂級(jí)窗體,或有可能嵌入到其他窗體中,則基于QWidget創(chuàng)建。

??? 當(dāng)然了,實(shí)際中,你還可以基于任何其他部件類(lèi)來(lái)派生??磳?shí)際需求了,比如QFrame、QStackedWidget等等。

?

(6)點(diǎn)擊“錘子”圖標(biāo)編譯,點(diǎn)擊“綠色箭頭”運(yùn)行

1.2.5、編譯測(cè)試

(1)選擇默認(rèn)“kit”編譯(編譯器、Qt版本的位數(shù)與系統(tǒng)位數(shù)相同)

1、mac和windows上,編譯通過(guò),程序運(yùn)行正常;

2、linux下初次編譯可能會(huì)報(bào)錯(cuò):cannot find –lGL;

解決辦法:在終端輸入sudo apt-getinstall libgl1-mesa-dev下載相應(yīng)的文件。

(2)同一系統(tǒng)下是否同時(shí)支持編譯32bit和64bit的程序

經(jīng)測(cè)試,初步得出結(jié)論:32bit系統(tǒng)下不支持編譯64bit程序;mac-64bit系統(tǒng)下可以編譯32bit程序;linux-64bit系統(tǒng)下編譯不了32bit程序,猜測(cè)是系統(tǒng)缺少32位庫(kù)文件。(詳細(xì)情況請(qǐng)查看《Qt安裝及編譯測(cè)試錯(cuò)誤報(bào)告》):

1.3、VS+Qt插件(還有問(wèn)題沒(méi)解決

1.3.1、安裝包

插件包:Qt Library + VS200X(X = 5,8,10…本文以VS2010為例進(jìn)行說(shuō)明)

Qt Library在官網(wǎng)上沒(méi)有Qt5SDK單獨(dú)的包,均捆包在Qt Creator集成包里,可通過(guò)安裝Qt Creator集成包獲取。

·????????Visual Studio Add-in 1.2.0 for Qt5? (VS插件)

?

1.3.2、安裝

(1)安裝步驟

1、安裝VS2005或以上版本。安裝比較簡(jiǎn)單,基本是“安裝”->“完成”的自動(dòng)模式。

2、安裝Qt的SDK。雙擊即可安裝,官網(wǎng)上暫無(wú)發(fā)現(xiàn)單獨(dú)的Qt5 SDK,都集成到了Qt Creator安裝包里面了,可以通過(guò)安裝Qt Creator安裝包獲取其SDK(但需手動(dòng)設(shè)置路徑,下面會(huì)說(shuō))。

3、安裝Visual Studio Add-in。雙擊即可安裝,安裝完成后,VS菜單上會(huì)多出一個(gè)“Qt”選項(xiàng)。

?

參考網(wǎng)址:

http://www.cnblogs.com/qq78292959/archive/2012/05/03/2481971.html

1.3.3、配置

(1)配置步驟

1、啟動(dòng)VS,點(diǎn)擊“Qt”->“Options”進(jìn)行路徑設(shè)置。

?

2、VS可以自動(dòng)檢測(cè)到并添加單獨(dú)安裝的Qt SDK路徑,如下所示:

?

3、但使用集成到QtCreator的SDK則需要手動(dòng)添加路徑,如下所示:

?

4、找到bin路徑,“確定”->“ok”:

?

5、路徑設(shè)置不正確時(shí),有紅字提醒并且“ok”按鈕無(wú)效:

?

6、點(diǎn)擊“OK”完成設(shè)置。

?

(2)配置問(wèn)題導(dǎo)致的常見(jiàn)錯(cuò)誤

???????? 1、Visual Studio Add-in與Qt SDK版本要匹配,不能添加比自身對(duì)應(yīng)版本高的SDK。否則會(huì)報(bào)錯(cuò):

1.3.4、新建項(xiàng)目

(1)“文件”->“新建”->“項(xiàng)目”

?

(2)選擇項(xiàng)目種類(lèi),命名項(xiàng)目并指定路徑

?

(3)在彈出的界面中直接點(diǎn)擊“下一步”,選擇需要的模塊

?

(4)設(shè)置基類(lèi)等,完成

(5)生成解決方案,啟動(dòng)

1.3.5、編譯測(cè)試(編譯沒(méi)通過(guò),可能配置不正確

1win32編譯,報(bào)錯(cuò):

1>------ 已啟動(dòng)生成: 項(xiàng)目: VSQt5, 配置: Debug Win32 ------

1>Rcc'ing vsqt5.qrc...

1>RCC Parse Error: 'd:\Qt+Creator\VSQt5\VSQt5\vsqt5.qrc'Line: 1 Column: 1 [Encountered incorrectly encoded content.]

1>Project : error PRJ0019: 某個(gè)工具從以下位置返回了錯(cuò)誤代碼: "Rcc'ingvsqt5.qrc..."

1>生成日志保存在file://D:\Qt+Creator\VSQt5\Win32\Debug\BuildLog.htm

1>VSQt5 - 1 個(gè)錯(cuò)誤,個(gè)警告

========== 生成: 成功0 個(gè),失敗1 個(gè),最新0 個(gè),跳過(guò)0 個(gè)==========

?

解決辦法:尚未解決,根據(jù)報(bào)錯(cuò)是在RCC解析vsqt5.qrc文件時(shí),遇到不正確的編碼內(nèi)容。對(duì)此做了進(jìn)一步測(cè)試:

?

1、VS無(wú).qrc文件的項(xiàng)目測(cè)試

Qt Console ApplicationQt5)項(xiàng)目,源碼,文件,結(jié)果如下:

編譯通過(guò),運(yùn)行正常,所以驗(yàn)證了的確跟.qrc文件有關(guān)。

?

2、在VSQt Creator里建同樣的工程,嘗試通過(guò)對(duì)比.qrc文件發(fā)現(xiàn)錯(cuò)誤的編碼內(nèi)容,但Qt Creator建的項(xiàng)目沒(méi)有.qrc文件

A、有.qrc文件的項(xiàng)目測(cè)試:

Qt ApplicationQt5)項(xiàng)目,其中基類(lèi)為:QMainWindow;源碼,文件,結(jié)果如下:

?

曾懷疑跟下面文件的紅色提示有關(guān),但網(wǎng)上的例子也是一樣的截圖。

?

B、 建同樣的工程,Qt Creator目錄沒(méi)有.qrc文件

3、網(wǎng)上下載別人VS開(kāi)發(fā)的Qt程序源碼,看看重新編譯后是否能通過(guò),對(duì)比.qrc文件是否不一樣。(該部分暫時(shí)還沒(méi)做)

2x64b編譯,報(bào)錯(cuò):

?

原因猜測(cè):沒(méi)有64位的庫(kù)文件和連接器等,插件不支持64位編譯。

?

1.4、小結(jié)

???????? 在Qt Creator上的搭建是成功的,在VS上插件的安裝配置遇到了問(wèn)題,但可以知道的是VS上用目前的32bit的SDK也同樣無(wú)法編譯64位程序的,而且VS僅限于windows系統(tǒng)。綜上,我們可以選擇Qt Creator進(jìn)行Qt的開(kāi)發(fā)。

?

2、系統(tǒng)庫(kù)的使用及程序發(fā)布

2.1、系統(tǒng)API的使用

可以通過(guò)包含相應(yīng)頭文件來(lái)直接使用API函數(shù),如:

此外,外部的文件通過(guò)“添加現(xiàn)有文件”,再#include即可使用,跟在MFC上使用沒(méi)多大區(qū)別。

?

2.2、庫(kù)的添加

2.2.1、只對(duì)本項(xiàng)目起作用的庫(kù)的添加

Qt Creator可以把庫(kù)添加到具體項(xiàng)目的屬性,添加后只對(duì)本項(xiàng)目起作用,不影響其他項(xiàng)目,下面以Qt Creator-msvc添加“外部庫(kù)”為例講解如何添加庫(kù)文件:

(1)右鍵要添加庫(kù)的目標(biāo)項(xiàng)目->“添加庫(kù)”

?

(2)選擇要添加庫(kù)的類(lèi)型,此處會(huì)有各類(lèi)型庫(kù)的說(shuō)明

?

(3)勾選對(duì)應(yīng)的“平臺(tái)”和“鏈接”,通過(guò)“瀏覽”獲取“庫(kù)文件”路徑以及“包含文件”路徑,注意的是選“庫(kù)文件”時(shí)自動(dòng)添加的“包含路徑”不一定是正確的,應(yīng)填寫(xiě)該庫(kù)頭文件的實(shí)際路徑。

值得注意的是:在windows下以這種方式導(dǎo)入的庫(kù)文件必須是.lib后綴,因?yàn)樵谖募x擇對(duì)話框里已經(jīng)把文件類(lèi)型限制為(*.lib),而QtCreator-mingw生成的靜態(tài)庫(kù)是.a后綴的。

?

(4)在完成前會(huì)有匯總顯示

?

(5)在導(dǎo)入完成后,會(huì)根據(jù)匯總做相應(yīng)的修改,一般為在.pro添加相應(yīng)的路徑信息,此時(shí)可以通過(guò)#include相應(yīng)的頭文件來(lái)使用庫(kù)函數(shù)

2.2.2、公共庫(kù)的添加(測(cè)試沒(méi)通過(guò)

參考網(wǎng)址:http://qt.csdn.net/articles.aspx?pointid=264&pointid2=

點(diǎn)擊主界面左邊菜單的“項(xiàng)目”->“構(gòu)建和運(yùn)行”,打開(kāi)下方的“構(gòu)建環(huán)境”->“詳情”,可以看到QtCreator對(duì)環(huán)境變量的使用情況:

從紅色框里的INCLUDE,LIB和LIBPATH,我們可以看出,Qt Creator是通過(guò)這三個(gè)環(huán)境變量的路徑找到相應(yīng)的系統(tǒng)庫(kù)文件的,所以理論上我們可以通過(guò)在這三個(gè)環(huán)境變量里添加相應(yīng)的文件路徑來(lái)達(dá)到添加“公共庫(kù)”的目的。但在嘗試中發(fā)現(xiàn),如果在這里修改這三個(gè)環(huán)境變量,新增的路徑只對(duì)本項(xiàng)目有用,并不影響到其他項(xiàng)目。要實(shí)現(xiàn)真正意義上的“公共庫(kù)”,需要到“我的電腦”->“屬性”里修改這三個(gè)環(huán)境變量。

在實(shí)際操作中遇到下面的問(wèn)題沒(méi)解決:

設(shè)置環(huán)境變量后,包含頭文件,使用Lib里面的函數(shù)時(shí)報(bào)錯(cuò):

2.3、靜態(tài)編譯與動(dòng)態(tài)編譯(靜態(tài)編譯沒(méi)實(shí)踐檢驗(yàn)

QtCreator開(kāi)發(fā)的程序可以通過(guò)以下兩種方法發(fā)布到?jīng)]Qt庫(kù)的電腦:

1、靜態(tài)編譯

可參考:

http://blog.csdn.net/c154387417/article/details/6330245

官網(wǎng)發(fā)布的安裝包在默認(rèn)情況下是動(dòng)態(tài)編譯的,而且沒(méi)有靜態(tài)編譯所需的Qt庫(kù),據(jù)網(wǎng)上所說(shuō)要靜態(tài)編譯需先自己編譯出靜態(tài)編譯所需的Qt庫(kù),然后在project.pro添加QMAKE_LFLAGS=-static指定為靜態(tài)編譯即可。由于編譯所需時(shí)間太長(zhǎng)(據(jù)說(shuō)好幾小時(shí)),暫時(shí)尚未嘗試。

2、復(fù)制運(yùn)行時(shí)提示缺少的dll文件到當(dāng)前目錄,可參考:(win32下測(cè)試通過(guò))

http://hi.baidu.com/dbzhang800/item/5c92691dc965017a7a5f2542

有一個(gè)dll(debug模式下為:libEGLd.dll;release模式下位:libEGL.dll)需特別注意的,缺少時(shí)并不會(huì)提示,debug編譯的exe運(yùn)行時(shí)直接報(bào)錯(cuò):

release編譯的exe缺少時(shí)點(diǎn)擊沒(méi)反應(yīng)。

?

3、靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)

參考: QT 靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)http://mobile.51cto.com/symbian-267846.htm

在各平臺(tái)上用Qt Creator創(chuàng)建、使用Qt靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)的方法是一樣的,這里選擇Qt 5.0.1for Windows 32-bit (MinGW 4.7) 測(cè)試。

3.1、靜態(tài)庫(kù)的創(chuàng)建和使用

3.1.1、靜態(tài)庫(kù)的創(chuàng)建

(1)新建項(xiàng)目,選擇“庫(kù)”->“C++庫(kù)”

?

(2)選擇庫(kù)的類(lèi)型為“靜態(tài)鏈接庫(kù)”,命名項(xiàng)目名稱,這里命名為“staticlib”

?

(3)選擇構(gòu)建套件

?

(4)選擇模塊

?

(5)類(lèi)信息一般不用修改,直接“下一步”->“完成”

?

(6)項(xiàng)目的文件架構(gòu)如下

?

(7)添加測(cè)試代碼

1、.h頭文件添加函數(shù)聲明:voidtest();

?

2、.cpp文件添加函數(shù)體

?

3、.pro文件添加:QT+=widgets;這主要是因?yàn)镼t5用widgets組件代替了QtGui,而在創(chuàng)建庫(kù)項(xiàng)目過(guò)程中的模塊選擇時(shí)并沒(méi)有Q widgets選項(xiàng),所以要使用界面組件時(shí)只能通過(guò)勾選QtGui并在.pro文件中加上QT+=widgets來(lái)達(dá)到使用目的;Qt5.0.2已解決這個(gè)問(wèn)題,在創(chuàng)建庫(kù)時(shí)已經(jīng)有Q widgets選項(xiàng),但如果你勾選的依然是QtGui,在.pro文件中除了要加上QT+=widgets外,還要加上QT-=gui。

?

另外,在已經(jīng)構(gòu)建好(即已編譯生成Makefile)的項(xiàng)目里,手動(dòng)修改.pro文件后要點(diǎn)擊“構(gòu)建”->“執(zhí)行make”,否則,盡管是“重新構(gòu)建項(xiàng)目”,所做的修改還是不起作用的。

?

(8)編譯

?

3.1.2、靜態(tài)庫(kù)的使用

(1)新建測(cè)試工程

?

(2)命名項(xiàng)目,指定工程路徑,這里命名為“staticlibtest”

?

(3)選擇構(gòu)建套件

?

(4)選擇“基類(lèi)”,“下一步”->“完成”

?

(5)工程文件結(jié)構(gòu)

?

(6)在.pro添加靜態(tài)庫(kù)路徑,其中“INCLUDEPATH +=”用于指定頭文件路徑,“LIBS +=”用于指定庫(kù)文件路徑

?

(7)在main.cpp調(diào)用靜態(tài)庫(kù)函數(shù)

(8)編譯運(yùn)行,其中“靜態(tài)庫(kù)測(cè)試”為調(diào)用靜態(tài)庫(kù)生成的

3.2、動(dòng)態(tài)庫(kù)的創(chuàng)建和使用

3.2.1、動(dòng)態(tài)庫(kù)的創(chuàng)建

(1)動(dòng)態(tài)庫(kù)的創(chuàng)建方法與靜態(tài)庫(kù)創(chuàng)建相同,只是在第二步時(shí)選擇“庫(kù)的類(lèi)型”時(shí)選擇“共享庫(kù)”,這里命名為“l(fā)ibdll”

?

(2)頭文件結(jié)構(gòu),比靜態(tài)庫(kù)多了一個(gè)“l(fā)ibdll_global.h”頭文件

?

(3)添加測(cè)試代碼

1、.pro文件添加:QT ?+= ?widgets

?

2、libdll.h添加函數(shù)聲明:voidtest();

?

3、.cpp文件添加函數(shù)體

?

(4)編譯

3.2.2、動(dòng)態(tài)庫(kù)的使用

(1)新建測(cè)試項(xiàng)目的方法與靜態(tài)庫(kù)測(cè)試項(xiàng)目的新建一樣,這里命名為“l(fā)ibdlltest”

(2)把.dll文件拷貝到執(zhí)行文件的目錄

?

(3)在.pro文件添加路徑

?

(4)在main.cpp里調(diào)用.dll里的函數(shù)

?

(5)編譯,運(yùn)行;下面的“這是動(dòng)態(tài)庫(kù)測(cè)試”是由.dll生成的。

?

3.3、小結(jié)

在各平臺(tái)上用Qt Creator創(chuàng)建、使用Qt靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)的方法是差不多是一樣的,只是生成的庫(kù)文件后綴不一樣而已,除了以上方法使用庫(kù)文件外,還可以通過(guò)添加“外部庫(kù)”的方法添加到目標(biāo)項(xiàng)目里使用;但是在windows下,導(dǎo)入的庫(kù)文件格式限定為(*lib),而Qt Creator-mingw生成的是.a后綴的靜態(tài)庫(kù)文件,不能以此方法,同樣也不能用此方法添加動(dòng)態(tài)庫(kù)。其實(shí)這里通過(guò)寫(xiě)代碼使用庫(kù)文件的使用方法跟MFC庫(kù)的“隱式調(diào)用”是類(lèi)似的,而上面的“添加庫(kù)”通過(guò)設(shè)置使用庫(kù)文件則可以類(lèi)比為MFC里庫(kù)的“顯式調(diào)用”。另外,創(chuàng)建和使用過(guò)程中還應(yīng)注意以下兩點(diǎn):

?

(1)在linux下編譯庫(kù)文件時(shí),系統(tǒng)時(shí)間不正確時(shí)會(huì)出現(xiàn)以下類(lèi)型的錯(cuò)誤:error: Warning: File `../LIB/LIB.pro' has modification time 4e+05 sin…,改正系統(tǒng)時(shí)間即可。

(2)使用庫(kù)時(shí)應(yīng)特別注意INCLUDEPATH +=和LIBS +=的正確寫(xiě)法,尤其是在跨平臺(tái)移植時(shí),應(yīng)注意路徑格式的轉(zhuǎn)變,很多notfound錯(cuò)誤都是由于這兩個(gè)路徑不正確引起的。

?

4、Qt程序的跨平臺(tái)移植

4.1、Qt的跨平臺(tái)

Qt的可移植性,指的是代碼不用修改,就可以在多個(gè)平臺(tái)編譯通過(guò)并運(yùn)行。針對(duì)每一種OS平臺(tái),Qt都有一套對(duì)應(yīng)的底層類(lèi)庫(kù),而接口是完全一致的。因此只要是在Qt庫(kù)上開(kāi)發(fā)的程序,放在任何一種所支持的平臺(tái)下都可以編譯運(yùn)行(前提條件是:程序中沒(méi)有使用某OS特有的機(jī)能)。也就是說(shuō)在OS和應(yīng)用層之間,增加了一個(gè)平臺(tái)層來(lái)保證可移植性。

4.2、移植方法

1、源代碼里只使用Qt庫(kù),沒(méi)有與平臺(tái)相關(guān)的代碼時(shí),一般只需在目標(biāo)平臺(tái)的Qt(版本要一樣,新版本對(duì)上一版本不完全兼容)上重新編譯即可,但要注意源碼里是否包含絕對(duì)路徑,Qt的跨平臺(tái)性是一次編寫(xiě)多次編譯,不同于java的一次編譯多次執(zhí)行。

2、如果程序中使用某些平臺(tái)相關(guān)的庫(kù)函數(shù),那么在移植時(shí)就需要針對(duì)不同平臺(tái)作一些改動(dòng)。

364位下開(kāi)發(fā)的QT程序, 在32位電腦上重新編譯一下就可以在32位機(jī)上運(yùn)行了, 前提是不要用到64位下才支持的函數(shù)和功能,但要注意某些數(shù)據(jù)類(lèi)型所占字節(jié)數(shù)的不同。

4.3、移植時(shí)應(yīng)注意的問(wèn)題


1、字符的編碼問(wèn)題。Windows下是ANCII編碼的,Linux下是Unicode編碼的,源程序注意轉(zhuǎn)化編碼。關(guān)于編碼的設(shè)置可參考: windows下默認(rèn)是GBK的編碼格式,如果想使用UTF8就要先修改Qt Creator的編碼格式,方法如下 Tools->Options->Environment->General->Default file encoding 修改好UTF8格式之后,再創(chuàng)建工程,就可以顯示UTF8格式的漢字了代碼如下:QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF8")); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8")); QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF8")); qDebug()<<"不怕神一樣的對(duì)手,就怕豬一樣的隊(duì)友";或者使用這樣輸出QTextCodec* codec = QTextCodec::codecForName("UTF8") QString str = codec->toUnicode("不怕神一樣的對(duì)手,就怕豬一樣的隊(duì)友"); qDebug()<<str; 來(lái)自網(wǎng)站:http://zhidao.baidu.com/question/186780737.html 2、Linux下的文件名連后綴都是區(qū)分大小寫(xiě)的,所以一些涉及到文件讀寫(xiě)的程序,后綴名也要注意一下。另外,在包含動(dòng)態(tài)庫(kù)或靜態(tài)庫(kù)的程序在移植到另一個(gè)平臺(tái)時(shí),相應(yīng)的庫(kù)文件也要注意后綴,不同時(shí)應(yīng)當(dāng)重新編譯。

3、盡量不要在程序里寫(xiě)絕對(duì)路徑,要用相對(duì)路徑;路徑不要含中文,注意‘/’和‘\’的轉(zhuǎn)換。

?

5、版本不兼容常見(jiàn)問(wèn)題

在初學(xué)Qt,我們難免要參考網(wǎng)上例子,但網(wǎng)上的例子大多是在Qt4上開(kāi)發(fā)的,所以會(huì)出現(xiàn)一些不兼容的問(wèn)題。

(1)、QtGui模塊的問(wèn)題。用Qt5編譯Qt4的工程出現(xiàn)最多的就是下面類(lèi)型的問(wèn)題:
???
錯(cuò)誤:C1083:?無(wú)法打開(kāi)包括文件:“QApplication”:?No?such?file?or?directory
???
錯(cuò)誤:C1083:?無(wú)法打開(kāi)包括文件:“QMainWindow”:?No?such?file?or?directory
???
出現(xiàn)原因:Qt5里不再用QtGui模塊,而是使用QtWidgets模塊。

解決方法:在.pro里加上QT?+=?widgets

(2)其他常見(jiàn)問(wèn)題集錦:

http://hi.baidu.com/xchinux/item/9044d8ce986accbb0d0a7b87

?

三、Qt界面庫(kù)基本的開(kāi)發(fā)過(guò)程,基本的控件

本部分是基于Qt5.0.1 + Qt Creator2.6.2進(jìn)行開(kāi)發(fā)的,目前還沒(méi)發(fā)現(xiàn)網(wǎng)上有Qt5的教程,鑒于與Qt4的使用大同小異,所以可以參考Qt4教程,推薦教程如下:

QtCreator教程:

《qt+creator系列教程》或《Qt_CreatoR_入門(mén)》,這兩本書(shū)內(nèi)容基本一樣:http://wenku.baidu.com/view/eac2b64133687e21af45a996.html

文檔集: http://www.open-open.com/doc/list/185

?

《C++ GUI Qt4 編程》或《精通QT4編程》,這兩本書(shū)內(nèi)容基本一樣:

http://ishare.iask.sina.com.cn/f/9045395.html

?

Qt各控件詳細(xì)說(shuō)明:

http://wenku.baidu.com/view/d64a7863af1ffc4ffe47ac7f.html

1、helloworld例子

(1)??????啟動(dòng)Qt Creator,點(diǎn)擊“Create Project”創(chuàng)建新項(xiàng)目;

?

(2)??????指定項(xiàng)目名

?

(3)??????選擇構(gòu)建套件,一般默認(rèn)即可;

?

(4)??????指定基類(lèi)

?

(5)??????直接點(diǎn)擊“完成”;

(6)??????點(diǎn)擊“mainwindow.ui”文件,進(jìn)入“設(shè)計(jì)器”;

(7)??????從控件庫(kù)拉一個(gè)靜態(tài)文本框“Label”到主界面;

(8)??????右擊控件->“改變普通文本”,寫(xiě)入“helloworld”;也可以在“屬性欄”編輯;

(9)??????保存,編譯;

(10)??運(yùn)行;

(11)??效果如下:

?

進(jìn)一步修改:(信號(hào)-槽的使用)

1往主界面添加一個(gè)按鈕“pushButton”;

2點(diǎn)擊“信號(hào)槽編輯器”->綠色“+”,新建信號(hào)-槽;(此方法適合綁定控件自帶的信號(hào)和槽)

?

3右擊“pushButton”按鈕,在彈出的菜單選擇“轉(zhuǎn)到槽”,在彈出的窗口選擇clicked信號(hào);

?

4在轉(zhuǎn)到的槽函數(shù)里編輯自定義槽函數(shù)

voidMainWindow::on_pushButton_clicked()

{

??? ui->label->setText("signal-slot!");

}

?

5保存,編輯,運(yùn)行。

點(diǎn)擊按鈕前:

點(diǎn)擊按鈕后:

?

在修改后的程序里主要演示了兩種使用信號(hào)-槽的方法,另外還可以用connect(*p, SIGNAL(f()), this, SLOT(f1()));使用信號(hào)槽,在后面會(huì)講到,此處暫不演示。

2、可視化編程介紹

Qt Gui初始界面我們可以在“設(shè)計(jì)模式”使用可視化編程來(lái)設(shè)計(jì)界面,這樣比寫(xiě)代碼更簡(jiǎn)單快捷。

(1)??????雙擊“界面文件”下的.ui文件轉(zhuǎn)到“設(shè)計(jì)模式”

?

(2)??????從控件庫(kù)往主界面拉控件構(gòu)造自己界面,選中控件可以在屬性欄編輯控件屬性;

?

?

(3)??????在行為編輯器里可以為控件添加行為和“信號(hào)-槽”

?

3、常用控件的常見(jiàn)接口

本部分只簡(jiǎn)單列舉常用的函數(shù)、信號(hào)和槽,詳細(xì)的介紹可以查看幫助文檔。

1.1、Layouts和spacers

兩者都主要是在布局中用到,通過(guò)各種嵌套可以構(gòu)造出復(fù)雜的界面布局,一般不會(huì)用到接口。

1.2、label ----靜態(tài)文本框

1、常用函數(shù)

QString???? selectedText() const??????? ???//選中的內(nèi)容

void? setSelection(int start, int length)?? //設(shè)置選中

void? setTextFormat(Qt::TextFormat)?? //設(shè)置字體格式

QString???? text() const?????????????? //獲取控件文本

2、常用信號(hào)

void??? linkActivated(constQString & link)?????? //點(diǎn)擊鏈接

void??? linkHovered(constQString & link)???? //鼠標(biāo)移到鏈接

要使label能發(fā)送這兩個(gè)信號(hào),必須先設(shè)置超鏈接,設(shè)置示例如下:

QLabel*openfilelabel=newQLabel(this);

openfilelabel->setOpenExternalLinks(true);/*這句很關(guān)鍵啊,否則就只能通過(guò)linkActivated信號(hào),連接到自定義槽函數(shù)中打開(kāi)了*/

openfilelabel->setText(tr("<ahref=\"http://www.csdn.net/\">打開(kāi)CSDN"));

openfilelabel.show();

3、常用槽

void??? clear()???????????????????????????????? //清空

void??? setPicture(const QPicture &picture)?? //顯示圖片

void??? setText(const QString &)?? ???????????//設(shè)置顯示文字

1.3、PushButton----按鈕

1、常用函數(shù)

QPushButton(QWidget* parent = 0) ?????????????????????? //構(gòu)造函數(shù)

QPushButton(constQString & text, QWidget * parent = 0)?? ??

QPushButton(constQIcon & icon, const QString & text, QWidget * parent = 0)?? ?

void?QButton::setText ( const?QString?&)?? ??// 設(shè)置這個(gè)按鈕上顯示的文本

QString? text() const //返回這個(gè)按鈕上顯示的文本

2、常用信號(hào)

Clicked()? //被點(diǎn)擊

3、常用槽

setEnabled(bool)?? //設(shè)置按鈕有效

setDisabled(bool) //設(shè)置按鈕失效

?

1.4、CheckBox----復(fù)選框

1、常用函數(shù)

Bool isChecked() const??? ??????????????????? //檢查是否被勾選

2、常用信號(hào)

stateChanged(int)? //狀態(tài)改變

3、常用槽

setChecked(bool)???????????? //設(shè)置選中狀態(tài)

setEnabled(bool)?? //設(shè)置按鈕有效

setDisabled(bool) //設(shè)置按鈕失效

1.5、listWidget----列表

1、常用函數(shù)

void addItem(constQString & label)?????? ? ?????????????????????? //加入項(xiàng)(參數(shù)為字符串)

void addItem(QListWidgetItem* item) ??????????????????????? //加入項(xiàng)(參數(shù)為字符串)

void addItems(constQStringList & labels) ????????????????????? //加入多項(xiàng)(參數(shù)為列表)

void? insertItem(int row, QListWidgetItem *item)??? //插入項(xiàng)

void? insertItem(int row, const QString &label)

void? insertItems(int row, const QStringList& labels)

QListWidgetItem *? currentItem() const???????????????????????????????????? //獲取當(dāng)前項(xiàng)

void? removeItemWidget(QListWidgetItem *item)?????? //刪除項(xiàng),但在實(shí)際應(yīng)用中調(diào)用該函數(shù)后,并沒(méi)有刪除項(xiàng),需要再調(diào)用delete才能刪除,其實(shí)直接調(diào)用delete也可以刪除,但不知道會(huì)不會(huì)有什么不良后果。使用舉例如下:

listWidget->removeItemWidget(listWidget->currentItem());

delete listWidget->currentItem();

參考網(wǎng)址:http://sweetdum.com/wordpress/?p=290

2、常用信號(hào)

void? currentItemChanged(QListWidgetItem *current, QListWidgetItem * previous)

void? currentRowChanged(int currentRow)

void? currentTextChanged(const QString &currentText)

void? itemChanged(QListWidgetItem * item)

void? itemClicked(QListWidgetItem * item)

void? itemDoubleClicked(QListWidgetItem *item)

void? itemSelectionChanged()

3、常用槽

Clear()???????? ????????????????????????//清空

ScrollToItem(QListWidgetItem * item)??????????? //轉(zhuǎn)到項(xiàng),可用于查找

?

1.6、tableWidget----表格

推薦網(wǎng)址:http://music.573114.com/Blog/Html/6016/203347.html

1、常用函數(shù)

QTableWidget(int rows, int columns, QWidget * parent = 0)????????????????? //構(gòu)造表格

void? setColumnCount(int columns)?????????????????????????????????????????????????????? ??? //設(shè)置表格列數(shù)

void? setRowCount(int rows)???????????????????????????????????????????????????????????????????????????? //設(shè)置表格行數(shù)

void? setHorizontalHeaderItem(int column,QTableWidgetItem * item)?????? //設(shè)置列名

void? setHorizontalHeaderLabels(constQStringList & labels)????????????????????????? //設(shè)置表頭

void? setItem(int row, int column,QTableWidgetItem * item)?????????????????????????? //設(shè)置單元表格內(nèi)容

2、常用信號(hào)

//此處cell和item是差不多的,只是cell用行和列定位,item用指針定位。

void? cellChanged(int row, int column)

void? cellClicked(int row, int column)

void? cellDoubleClicked(int row, int column)???????????

void? currentCellChanged(int currentRow, intcurrentColumn, int previousRow, int previousColumn)

void? currentItemChanged(QTableWidgetItem *current, QTableWidgetItem * previous)

void? itemChanged(QTableWidgetItem * item)

void? itemClicked(QTableWidgetItem * item)

void? itemDoubleClicked(QTableWidgetItem *item)

void? itemSelectionChanged()

3、常用槽

void? clear()??????????????????????????????????????????? //清空表格

void? clearContents()????????????????????????? //清空表格內(nèi)容

void? insertColumn(int column)?????? //插入列

void? insertRow(int row)??????????????????? //插入行

void? removeColumn(int column)??? //刪除列

void? removeRow(int row)??????????????? //刪除行

void? scrollToItem( const QTableWidgetItem * item, QAbstractItemView::ScrollHint hint =EnsureVisible )????????????????? //滾動(dòng)到項(xiàng),常用于查找

setSortingEnabled(true);??????????????????????????????? // 設(shè)置點(diǎn)擊表頭自動(dòng)排序

setSelectionBehavior(QAbstractItemView::SelectRows);??? ????? //整行選中的方式

setEditTriggers(QAbstractItemView::NoEditTriggers);??????????????????? //設(shè)置單元表格不可編輯

1.7、treeWidget----樹(shù)

1、常用函數(shù)

void? addTopLevelItem(QTreeWidgetItem * item)?????????????????? ??????????????????????????? //插入一個(gè)頂級(jí)項(xiàng)

void? addTopLevelItems(constQList<QTreeWidgetItem *> & items)??? //插入多個(gè)頂級(jí)項(xiàng)

QTreeWidgetItem *???????? currentItem() const???????????????????????????????????? ??????????????????????????? //獲取當(dāng)項(xiàng)

void? setHeaderLabel(const QString &label)??????????????????? ??????????????????????????? //加入樹(shù)的屬性列名

void? setHeaderLabels(const QStringList &labels)?????????????????? ??????????????????????????? //加入樹(shù)的多個(gè)屬性列名

2、常用信號(hào)

void? currentItemChanged(QTreeWidgetItem *current, QTreeWidgetItem * previous)

void? itemChanged(QTreeWidgetItem * item, intcolumn)

void? itemClicked(QTreeWidgetItem * item, intcolumn)

void? itemDoubleClicked(QTreeWidgetItem *item, int column)

void? itemSelectionChanged()

3、常用槽

void? clear()???????????????????????????????????????????????????????????????????????????????? //清空

void? collapseItem(const QTreeWidgetItem *item)?????? //收起

void? expandItem(const QTreeWidgetItem *item)????????????????? //展開(kāi)

void? scrollToItem(const QTreeWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)??????????? //滾動(dòng)到項(xiàng),常用于查找

?

1.8、progressBar----進(jìn)度條

1、常用函數(shù)

QProgressDialog( const QString & labelText, const QString& cancelButtonText, int minimum, int maximum, QWidget * parent = 0,Qt::WindowFlags f = 0 )??????????? //構(gòu)造函數(shù)

int??? maximum() const??? //獲取最大值

int??? minimum() const???? //獲取最小值

int??? value() const?? ???????? //獲取當(dāng)前值

2、常用信號(hào)

void? valueChanged(int value)

3、常用槽

void? reset()

void? setMaximum(int maximum)?? ??????????????????????????? //設(shè)置最大值

void? setMinimum(int minimum)???? ??????????????????????????? //設(shè)置最小值

void? setRange(int minimum, int maximum)??????????? //設(shè)置值范圍

void? setValue(int value)? ?????????????????????????????????????????????? //設(shè)置當(dāng)前值

?

1.9、comboBox----組合下拉框

1、常用函數(shù)

void? addItem(const QString & text, constQVariant & userData = QVariant())? //加入純文本

void? addItem(const QIcon & icon, constQString & text, const QVariant & userData = QVariant())???? //加入圖標(biāo)和文字

void? addItems(const QStringList & texts)????? //批量加入

QString???? currentText() const???????????????????????????? //當(dāng)前內(nèi)容

void? insertItem(int index, const QString& text, const QVariant & userData = QVariant())

void? insertItem(int index, const QIcon &icon, const QString & text, const QVariant & userData = QVariant())

void? insertItems(int index, constQStringList & list)

void? removeItem(int index)

2、常用信號(hào)

void? currentIndexChanged(int index)

void? currentIndexChanged(const QString &text)

void? currentTextChanged(const QString &text)

void? editTextChanged(const QString &text)

void? highlighted(int index)

void? highlighted(const QString & text)

3、常用槽

void? clear()

void? clearEditText()

void? setCurrentIndex(int index)

void? setCurrentText(const QString &text)

void? setEditText(const QString & text)

?

1.10 QmessageBox----消息提示盒

(1)常用函數(shù)

QPushButton *???????? addButton(constQString & text, ButtonRole role)??????? //加按鈕

QPushButton *???????? addButton(StandardButtonbutton)

void? removeButton(QAbstractButton * button)

void? setDefaultButton(QPushButton * button)???? //設(shè)置默認(rèn)按鈕

void? setInformativeText(const QString &text)

void? setStandardButtons(StandardButtonsbuttons)?? //設(shè)置標(biāo)準(zhǔn)按鈕

void? setText(const QString & text)

void? setWindowTitle(const QString &title)

?

靜態(tài)函數(shù):

void? about(QWidget * parent, const QString& title, const QString & text)

void? aboutQt(QWidget * parent, const QString& title = QString())

StandardButton?????? critical(QWidget *parent, const QString & title, const QString & text, StandardButtonsbuttons = Ok, StandardButton defaultButton = NoButton)

StandardButton?????? information(QWidget* parent, const QString & title, const QString & text, StandardButtonsbuttons = Ok, StandardButton defaultButton = NoButton)

StandardButton?????? question(QWidget *parent, const QString & title, const QString & text, StandardButtonsbuttons = StandardButtons( Yes | No ), StandardButton defaultButton = NoButton)

StandardButton?????? warning(QWidget *parent, const QString & title, const QString & text, StandardButtonsbuttons = Ok, StandardButton defaultButton = NoButton)

?

(2)常見(jiàn)用法舉例:

例1:

QMessageBox msgBox;

msgBox.setText("The document has beenmodified.");

msgBox.setInformativeText("Do you wantto save your changes?");

msgBox.setStandardButtons(QMessageBox::Save| QMessageBox::Discard | QMessageBox::Cancel);

msgBox.setDefaultButton(QMessageBox::Save);

int ret = msgBox.exec();

?

switch (ret) {

?case QMessageBox::Save:

?????// Save was clicked

?????break;

?case QMessageBox::Discard:

?????// Don't Save was clicked

?????break;

?case QMessageBox::Cancel:

?????// Cancel was clicked

?????break;

?default:

?????// should never be reached

?????break;

}

效果圖:

?

例2:

int ret = QMessageBox::warning(this,tr("My Application"),

?????????????????????????????? tr("Thedocument has been modified.\n"

????????????????????????????????? "Do youwant to save your changes?"),

??????????????????????????????QMessageBox::Save | QMessageBox::Discard

?????????????????????????????? |QMessageBox::Cancel,

??????????????????????????????QMessageBox::Save);

效果圖:

?

1.11 QFileDialog----文件選擇框

(1) 常見(jiàn)函數(shù)

最常用的靜態(tài)成員函數(shù):

1QString????? getExistingDirectory( QWidget * parent = 0, const QString & caption= QString(), const QString & dir = QString(), Options options =ShowDirsOnly )

2QString????? getOpenFileName ( QWidget * parent = 0,const QString & caption = QString(), const QString & dir = QString(),const QString & filter = QString(), QString * selectedFilter = 0, Optionsoptions = 0 )

3QStringList??????? getOpenFileNames ( QWidget * parent = 0,const QString & caption = QString(), const QString & dir = QString(),const QString & filter = QString(), QString * selectedFilter = 0, Optionsoptions = 0 )

4QString????? getSaveFileName ( QWidget * parent = 0, const QString & caption = QString(),const QString & dir = QString(), const QString & filter = QString(),QString * selectedFilter = 0, Options options = 0 )

?

void? selectFile(const QString &filename)

void? selectNameFilter(const QString &filter)

QStringList?????? selectedFiles() const

QString???? selectedNameFilter() const

void? setAcceptMode(AcceptMode mode)

void? setDefaultSuffix(const QString &suffix)

void? setDirectory(const QString &directory)

void? setDirectory(const QDir &directory)

?

?(2)常見(jiàn)用法舉例:

例1:

QFileDialog fildlg;

???fildlg.setAcceptMode(QFileDialog::AcceptOpen);

???if(fildlg.exec()==QFileDialog::Accepted) // ok

??????? {

??????? int ret =QMessageBox::information(this, "Title", "打開(kāi)成功",

??????????????????????????????????QMessageBox::Ok, QMessageBox::Ok);

?

?????? ?}

效果圖:

?

例2:

QStringfileName=QFileDialog::getOpenFileName(this,

tr("OpenImage"),"/home/jana",tr("Image Files(*.png *.jpg *.bmp)"));

效果圖:

1.12 QSystemTrayIcon----托盤(pán)類(lèi)

(1)常用函數(shù)

void? setContextMenu( QMenu * menu )?????? //設(shè)置托盤(pán)右鍵菜單

void? setIcon( const QIcon & icon )??????????????????????????? //設(shè)置圖標(biāo)

void? setToolTip( const QString & tip )???????????? //設(shè)置托盤(pán)名稱

void? showMessage( const QString & title, const QString & message, MessageIcon icon =Information, int millisecondsTimeoutHint = 10000 )????????? //設(shè)置氣泡顯示信息

?

常用信號(hào)

void? activated( QSystemTrayIcon::ActivationReason reason )????? /*激活理由(單擊,雙擊等),通常用

connect(trayIcon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));綁定。*/

void? messageClicked()

1.13 QThread----線程類(lèi)

(1)常用函數(shù)

void? exit( int returnCode = 0 )???????? //退出,返回一個(gè)代碼

bool isFinished() const????????????????????? //檢查線程是否結(jié)束

bool isRunning() const???????????????????? //檢查線程是否在運(yùn)行

?

常用信號(hào)

void? finished()???????????????????????????????????? //結(jié)束

void? started()????????????????????????????????????? //開(kāi)始

void? terminated()????????????????????????????? //終止

?

???????? 常用槽:

???????? void? quit()?????????????????????????????????? ???????? //退出,返回0,相當(dāng)于QThread::exit(0)

void? start (Priority priority = InheritPriority ) //開(kāi)始

void? terminate()???????????????????????????????? //終止

?

1.14 線程和信號(hào)-槽用法舉例

使用舉例:

//MyThread.h

class MyThread :public QThread

{

??? Q_OBJECT?????????????????????????? //要使用“信號(hào)-槽”機(jī)制就要加入這句

signals:

??? void ShowWin(int i);

protected:

??? void run();

};

?

//MyThread.cpp

voidMyThread::run()??????????????? //run是線程的核心函數(shù),自定義操作都在這里進(jìn)行

{

??? while(1)

??? {

??????? emit ShowWin(10);

??? }

}

?

//mainwindow.h

class MainWindow: public QMainWindow

{

??? Q_OBJECT

public:

explicit MainWindow(QWidget *parent = 0);

private slots:

??? void SetShow(int i);

}

?

//mainwindow.cpp

MainWindow::MainWindow(QWidget*parent) :

??? QMainWindow(parent),

??? ui(new Ui::MainWindow)

{

??? ui->setupUi(this);

?

???????? MyThread ?*thread = new MyThread(parent);

??? connect(thread, SIGNAL(ShowWin(int)), this, SLOT(SetShow(int)));??????? //在綁定信號(hào)槽時(shí),信號(hào)函數(shù)和槽函數(shù)的參數(shù)均只有數(shù)據(jù)類(lèi)型,沒(méi)有變量名

??? thread->start();

}

?

voidMainWindow:: SetShow(int i)

{

??? Std::cout<<i<<std::endl;

??? show();

}

?

若要在自定義線程里編輯界面,不可以直接通過(guò)窗口指針來(lái)操作界面,直接操作界面會(huì)莫名其妙地崩潰,應(yīng)當(dāng)通過(guò)信號(hào)槽機(jī)制來(lái)編輯界面。

四、QtWebkit的使用

1、QtWebkit從Qt4.4版本開(kāi)始引入,若Qt4.4以上沒(méi)發(fā)現(xiàn)QtWebkit組件極有可能是安裝不完全所致。
2、使用webkit時(shí)注意要在.pro文件添加相應(yīng)選項(xiàng):QT+= webkitwidgets(Qt5版本),QT += webkit(Qt4版本)
3、簡(jiǎn)單Demo存放在:\\192.168.1.1\temp\kongfy\webkit_Demo
參考網(wǎng)址:http://blog.csdn.net/liuhongwei123888/article/details/6111434
http://www.tuicool.com/articles/iayIj2

?

總結(jié)

以上是生活随笔為你收集整理的Qt开发入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

99 精品 在线 | 四虎影视av| 日韩av成人在线 | www.狠狠插.com | 免费久久片 | 久久影视一区二区 | 美女福利视频一区二区 | 国内精品久久久久久中文字幕 | 国产精品久久久久久久午夜片 | 久草色在线观看 | 久久精品导航 | 在线免费黄 | 成人黄性视频 | 韩国av一区二区三区在线观看 | 综合av在线 | 久久久91精品国产一区二区三区 | 69国产成人综合久久精品欧美 | 免费观看特级毛片 | 亚洲午夜久久久综合37日本 | 激情丁香婷婷 | 精品一区久久 | 欧美aaa大片 | 香蕉91视频 | 亚洲一级片在线看 | 久久99精品久久久久久清纯直播 | 久久这里只有精品首页 | 日韩理论片在线观看 | 国语久久 | 菠萝菠萝在线精品视频 | 97人人澡人人添人人爽超碰 | 中文字幕乱码在线播放 | 欧美精品久久久久久久亚洲调教 | 干干日日 | 一本一道久久a久久精品蜜桃 | 国产精品久久免费看 | 欧美日韩精品免费观看视频 | 91精品一区国产高清在线gif | 四虎在线观看视频 | 日韩精品视频免费在线观看 | 国产亚洲精品中文字幕 | 国产黄色看片 | 亚洲成a人片77777kkkk1在线观看 | 国内成人精品视频 | 亚洲精品乱码久久久一二三 | 久草a在线| 天天爽天天爽夜夜爽 | 国产精品国产亚洲精品看不卡 | 四虎永久免费在线观看 | 在线观看麻豆av | 成人毛片在线视频 | 91av影视 | 欧美一级视频免费看 | 亚洲男男gaygay无套同网址 | 色婷婷免费 | 五月开心激情 | 在线v片免费观看视频 | 国产成人免费观看 | 免费高清国产 | 久久经典国产视频 | 免费网站观看www在线观看 | 精品国产视频在线 | 高清av免费看 | 999视频网站| 97色国产| av片子在线观看 | 国产精品入口久久 | 久久怡红院 | 精品国产电影一区 | 久久亚洲综合国产精品99麻豆的功能介绍 | 精品国产伦一区二区三区 | 国产专区在线 | 免费精品 | a级一a一级在线观看 | 96国产精品视频 | 热久久电影 | 免费色网 | 最近字幕在线观看第一季 | 久久精品中文字幕一区二区三区 | 91九色porny蝌蚪视频 | 在线精品亚洲 | 日本精品久久久一区二区三区 | 国产999精品久久久久久麻豆 | 五月天综合色激情 | 精品久久美女 | 日韩在线观看av | 99爱这里只有精品 | 992tv人人网tv亚洲精品 | 国产精品麻 | 久久久电影网站 | 色综合天天综合网国产成人网 | 成人影视片| 中文字幕av免费 | 国产精品一区二区免费 | 精品伦理一区二区三区 | 亚洲午夜精品福利 | 在线免费黄色av | 国产在线观看,日本 | 欧美激情精品久久久久久免费 | 久久精品理论 | 99久久精品免费看国产一区二区三区 | www.亚洲视频 | 国产精品一区欧美 | 中文字幕中文字幕 | 亚洲国产精品500在线观看 | 欧美激情视频一二三区 | 婷婷在线播放 | 亚洲午夜精品久久久 | 91中文字幕视频 | 久久免费资源 | 国产99久久久久久免费看 | 97视频免费在线 | 四虎8848免费高清在线观看 | 黄网站a| 成人综合婷婷国产精品久久免费 | a色视频| 在线播放一区二区三区 | 中文字幕国产一区 | 就要色综合| 丁香婷婷综合激情 | a久久免费视频 | 国产亚洲综合精品 | 人人爱在线视频 | 色噜噜在线观看视频 | 射射射av| 三级黄色片子 | 国产字幕在线播放 | 亚洲另类视频 | 亚洲精品播放 | 丁香花中文在线免费观看 | 2019av在线视频| 在线看片中文字幕 | 日韩久久一区二区 | 久久99亚洲精品久久久久 | 亚洲激情五月 | 国产精品资源 | 精品自拍av | 波多野结衣在线视频一区 | 免费观看www视频 | 最近中文字幕大全中文字幕免费 | av一级在线 | 久久伦理 | 久久久天堂 | 久久噜噜少妇网站 | 色偷偷88888欧美精品久久 | 国产精品视频免费看 | 啪啪凸凸 | 日日爽| 亚洲国产精品推荐 | 久久国产区 | 91在线小视频 | 1024手机基地在线观看 | 国产高清不卡 | 久久久久久久久久国产精品 | 国产精品久久久久久久久久久久午夜 | 久久精品一区 | 一二三四精品 | 国产精品视频在线看 | 精品国产_亚洲人成在线 | 91.麻豆视频| 成人一区二区在线 | 国产精品中文字幕av | 国产一区二区久久久 | 少妇自拍av | 99视频久久 | 韩国精品一区二区三区六区色诱 | 国产精品成人一区二区三区 | 香蕉精品在线观看 | 国产日韩av在线 | 日本女人b | 91免费网站在线观看 | 天天干,天天插 | 欧洲av不卡 | 欧美天堂影院 | 91成年人视频 | 久久成人精品视频 | 在线电影av | 国产精品不卡在线 | 亚洲作爱视频 | 日韩高清不卡在线 | 欧美日韩在线网站 | 成人午夜剧场在线观看 | 久久久人人爽 | 亚洲女欲精品久久久久久久18 | 亚洲精品国产精品乱码在线观看 | 一级黄色在线视频 | 国产成人亚洲在线观看 | 99精品视频精品精品视频 | 伊人午夜视频 | 婷婷国产视频 | 国产在线观看a | 91精品在线看 | 欧美视频在线二区 | 久久国产精品99久久久久久丝袜 | 天天干天天爽 | 国产精品对白一区二区三区 | 国产一级久久久 | 国产精品第一 | 99国产精品久久久久久久久久 | 黄网站污 | 一区二区三区免费在线观看视频 | 久久人网 | 久草在线视频网 | 欧美性生活一级片 | 欧美日韩三级在线观看 | a视频在线播放 | 超级碰碰免费视频 | 西西444www大胆无视频 | 国产a级片免费观看 | 五月天综合色激情 | 欧美一二三四在线 | 久久av影视 | 亚洲国产操 | 国产麻豆电影 | 日韩欧美在线视频一区二区三区 | 182午夜在线观看 | 亚洲aⅴ在线 | 亚洲丁香久久久 | 欧美精品久久久久久久亚洲调教 | 日韩久久视频 | 天天综合入口 | 欧洲精品久久久久毛片完整版 | 99热.com| 超碰在线人人 | 激情五月***国产精品 | 最新av网址大全 | 97免费公开视频 | 国内久久久久 | 黄色亚洲片 | 国产免费二区 | 亚洲精品麻豆视频 | 最新色站| 国产精品一区在线观看你懂的 | 久久在线影院 | 亚洲精品在线观看av | 国产视 | 怡红院成人在线 | 高清一区二区 | 视频在线观看一区 | 欧美综合在线视频 | 日韩二区在线观看 | 日韩女同av | 日韩成人高清在线 | 免费看黄的视频 | 中文字幕av一区二区三区四区 | 国产在线va | bbbb操bbbb | 国产成人高清av | 日韩免费视频线观看 | 亚洲全部视频 | 最近中文字幕国语免费高清6 | 一区二区三区在线免费 | 免费黄色a级毛片 | 欧美在线free | 又爽又黄又无遮挡网站动态图 | 91亚色视频在线观看 | 中文字幕91 | 在线国产欧美 | 黄色小说视频网站 | 首页av在线 | 中文资源在线播放 | 女人魂免费观看 | 在线国产一区 | 久久成人免费视频 | 国产手机视频在线观看 | 一区二区精品在线 | 亚洲va欧美va国产va黑人 | 九九欧美视频 | 五月婷婷久久综合 | 中文字幕在线观看视频一区二区三区 | 高清国产午夜精品久久久久久 | 日韩美女久久 | 成人在线一区二区三区 | 天天操天天怕 | 亚洲不卡123 | 久久综合九色综合欧美狠狠 | 成人av一区二区兰花在线播放 | 欧美在线18 | 日韩在线免费高清视频 | av丝袜天堂 | 成人精品亚洲 | 久草在线免费新视频 | 国产精品二区三区 | 日本在线观看中文字幕无线观看 | 狠狠的操狠狠的干 | 天天操天操 | 婷婷丁香激情综合 | 亚洲欧美色婷婷 | 中文字幕电影高清在线观看 | 91精品免费视频 | 麻豆果冻剧传媒在线播放 | www.com.黄| 夜夜躁天天躁很躁波 | 午夜三级大片 | 午夜精品福利在线 | 超碰人人射 | 免费在线观看91 | 日韩在线电影一区 | 日本中文字幕在线看 | 免费av成人在线 | 福利视频入口 | 久久99深爱久久99精品 | zzijzzij日本成熟少妇 | 免费99视频 | 欧美激情一区不卡 | 欧美整片sss | 99久久99久久免费精品蜜臀 | 在线免费观看不卡av | 91视频在线国产 | 免费中文字幕视频 | 综合天堂av久久久久久久 | 欧美日韩高清在线观看 | 欧美激情片在线观看 | 91精品视频观看 | 欧美日韩精品久久久 | 亚洲一区二区三区毛片 | 婷婷激情久久 | 97超碰超碰久久福利超碰 | 人人爽影院 | www.久久久久 | 综合国产在线观看 | 亚洲国产精品视频 | 色婷婷狠 | 免费在线观看av不卡 | 伊人婷婷色 | 99精品国自产在线 | 国产免费久久av | 91九色丨porny丨丰满6 | 五月天国产| 久久久国产精品人人片99精片欧美一 | 久草免费在线观看视频 | 日韩啪啪小视频 | 欧美日本不卡视频 | 久久亚洲私人国产精品va | 久久久国产网站 | 久久一区二区三区超碰国产精品 | 怡红院av久久久久久久 | 久亚洲 | 超碰国产在线 | 日韩av中文在线观看 | 色天天综合网 | 在线观看网站你懂的 | 天堂av一区二区 | 亚洲综合视频在线观看 | 欧美日韩国产综合一区二区 | 亚洲国产av精品毛片鲁大师 | 国产精品久久久久av福利动漫 | 久久精品中文字幕免费mv | 久99久在线视频 | av一区二区三区在线观看 | 免费在线观看av的网站 | 在线观看视频99 | 婷婷 中文字幕 | 91精品国产欧美一区二区 | 黄色成人av | 丁香六月综合网 | 国产精品美女久久久久久久 | 亚a在线 | 国产激情免费 | 国产婷婷色 | 中文在线字幕观看电影 | 免费进去里的视频 | 久久99久久精品国产 | 欧美国产在线看 | 欧美另类一二三四区 | 欧美精品在线免费 | 天天爱天天射天天干天天 | 成人久久久电影 | 久久五月网| 色综合欧洲 | 开心色婷婷 | 九九精品久久久 | 国产麻豆视频在线观看 | 免费a v在线 | 欧美日韩免费一区二区三区 | 五月天婷婷在线视频 | 五月激情丁香婷婷 | 国产精品99久久久精品免费观看 | 九九国产精品视频 | 成人久久久久久久久久 | 99久久精品电影 | 精品一区二区在线免费观看 | 日本在线视频一区二区三区 | 啪啪资源 | 久草在线视频免费资源观看 | 午夜视频免费播放 | 中文字幕一区二区三区乱码在线 | 午夜一级免费电影 | 久草在线这里只有精品 | 婷婷色综合色 | 黄色成人影视 | 久久精品视频在线 | 天天超碰 | 亚洲japanese制服美女 | 欧美 日韩 国产 成人 在线 | 二区三区视频 | 欧美激情视频在线免费观看 | 97视频人人澡人人爽 | 97视频资源 | 一区二区精品在线观看 | 欧美成年网站 | 欧美少妇的秘密 | 美女精品网站 | 视频 天天草| 又大又硬又黄又爽视频在线观看 | 亚洲午夜电影网 | 国产精品久久久777 成人手机在线视频 | 久久五月精品 | 9ⅰ精品久久久久久久久中文字幕 | 欧美激情精品久久久久久免费 | 九九有精品 | 久久久久久久久久久久久久免费看 | 成人久久毛片 | www.福利视频 | 91精彩视频在线观看 | 久久久久久久久亚洲精品 | 天天干天天拍天天操 | 免费看片在线观看 | 亚洲网站在线看 | 国内精品久久久久久久久久久 | 麻豆视频在线观看免费 | 亚洲日韩精品欧美一区二区 | 日韩一区正在播放 | 国产免费久久av | 中文字幕在线高清 | 97人人模人人爽人人喊中文字 | 久草在线高清视频 | 国产资源 | 韩国av一区 | 欧美国产精品一区二区 | 久久精品电影网 | 国产精品久久久久久久久久久久午 | 国产一区在线免费 | 久久高清国产 | 久久精品影视 | 久久综合给合久久狠狠色 | 五月婷综合 | 欧美日韩在线网站 | 国产专区一 | 成人av在线直播 | 日韩精品短视频 | 国产精品久久久久国产精品日日 | 一级国产视频 | 久久av福利| 久热av | 国产无遮挡又黄又爽在线观看 | 午夜国产一区二区三区四区 | 中国一区二区视频 | 黄色毛片在线观看 | 色综合夜色一区 | 欧美日韩一级久久久久久免费看 | 亚洲午夜av电影 | 91看片麻豆 | 成人中文字幕在线观看 | 成在人线av| 黄色小说视频在线 | 免费在线日韩 | 69精品视频在线观看 | 日韩精品视频免费专区在线播放 | av免费看网站 | 天天久久综合 | 狠狠色丁香久久婷婷综 | 精品女同一区二区三区在线观看 | 99亚洲视频 | 国产综合在线视频 | 国产一级视频 | 一区在线免费观看 | 波多野结衣电影久久 | 久久综合九色综合欧美就去吻 | 中文字幕在线观看视频一区二区三区 | 在线免费试看 | 免费网站在线观看人 | 日韩成片| 国产成人精品一区二区三区福利 | 国产一区二区日本 | 永久免费av在线播放 | 91丨九色丨高潮 | 国产成人亚洲在线观看 | 精品视频资源站 | 99视频这里只有 | 91成人精品一区在线播放 | 美女免费视频网站 | 亚洲永久精品国产 | 国产一区在线播放 | 色婷婷免费 | av天天澡天天爽天天av | 日韩av女优视频 | 国内精品视频免费 | 国产日韩精品一区二区 | 免费黄色av片 | 天天插夜夜操 | 国产精品久久久免费看 | 国内精品久久久久久久久久久 | 99视 | 一区二区三区四区精品视频 | 毛片a级片| 蜜臀久久99精品久久久酒店新书 | 深夜国产福利 | 在线黄色免费av | 正在播放一区二区 | av在线播放国产 | 欧美一级性生活视频 | 四虎4hu永久免费 | 亚洲乱亚洲乱亚洲 | 久久国语露脸国产精品电影 | 国产99久久久久久免费看 | 黄色亚洲大片免费在线观看 | 免费看十八岁美女 | 91新人在线观看 | 日本黄色免费网站 | 久久久国产成人 | 少妇bbbb| 最新国产精品亚洲 | 一区二区理论片 | 婷婷网址 | 五月婷婷激情综合 | 国产精品五月天 | 91探花在线 | 成人免费色 | 成人免费在线播放 | 人人盈棋牌 | 日韩区欧美久久久无人区 | 国产91免费看 | www.日本色| 欧美亚洲专区 | 久久9精品| 欧美日韩国产xxx | 国产一级视屏 | 九九免费精品视频在线观看 | 国产精品一区免费看8c0m | 亚洲精品乱码久久久久 | 亚洲激情在线视频 | 国产91免费在线观看 | 在线观看视频你懂得 | 日韩av播放在线 | 波多野结衣视频一区二区三区 | 欧美一级片在线 | 91亚洲精品久久久蜜桃网站 | 日韩欧美网址 | 成人黄大片 | 97视频在线看 | 国产精品永久免费观看 | 国产精品午夜8888 | 国产高清在线不卡 | 精品国产诱惑 | a午夜电影 | 日本中文字幕视频 | 免费看一级特黄a大片 | 国产精品专区在线 | 国产免费资源 | 奇米影音四色 | 中文字幕亚洲不卡 | 91免费高清 | 亚洲精品乱码久久久久v最新版 | 91在线播放视频 | 亚洲精品自在在线观看 | 久久永久视频 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 国产二区电影 | 国产三级精品三级在线观看 | 久久不见久久见免费影院 | 色网站黄| av高清网站在线观看 | 欧美日韩在线播放一区 | 免费男女羞羞的视频网站中文字幕 | 国产香蕉久久精品综合网 | 国产成人精品一区二区在线 | 在线观看亚洲精品视频 | 久久国产精品影片 | 九九精品在线观看 | 九九久久久久久久久激情 | 亚洲电影图片小说 | 欧美精品v国产精品v日韩精品 | 国产精品嫩草影院99网站 | 五月婷婷色丁香 | 在线亚洲欧美视频 | 亚洲视频1 | 国内外激情视频 | 日韩精品久久久久久中文字幕8 | 丁香婷婷综合网 | 久久久国产一区二区三区四区小说 | 国产在线播放一区二区三区 | 天天干天天摸 | 国产精品久久久久久久久久尿 | 精品久久久久久久久亚洲 | av中文字幕免费在线观看 | 国内精品久久久久影院一蜜桃 | 国产免费精彩视频 | 99精品在线免费在线观看 | 精品美女在线视频 | 国产精品久久久久久久久久免费看 | 91精品推荐 | 啪啪凸凸| 国产日韩在线看 | 欧美资源在线观看 | 91精品在线视频 | 热re99久久精品国产66热 | 99性视频| 欧美日韩国产精品爽爽 | 国产女人免费看a级丨片 | 一区二区三区在线不卡 | 久久99久久99久久 | 成人在线视| 亚洲1区 在线 | 久久国产精品小视频 | 91欧美精品| 91福利国产在线观看 | 五月开心婷婷 | 91在线精品视频 | 亚洲,播放 | 国产三级香港三韩国三级 | 久9在线| 黄色特一级 | 国产成人亚洲精品自产在线 | 99国产精品久久久久老师 | 日韩免费电影一区二区 | 黄在线免费观看 | 午夜12点| 精品国产午夜 | 免费网站观看www在线观看 | 国产精品久久久久久久久久久免费看 | 精品一二三区 | a色视频| 天天草天天操 | 天天色天天射天天操 | 国产在线精| 欧美亚洲精品一区 | 久久欧美精品 | 国产黄色片在线 | 国产主播99| av色影院| 美女国产在线 | 欧美小视频在线 | 亚洲丝袜一区 | 天天干天天摸天天操 | 热久久视久久精品18亚洲精品 | 五月婷婷丁香在线观看 | 国产亚洲精品久久久久久网站 | 色婷婷亚洲精品 | 黄色免费av| 亚洲黄色三级 | 国产亚洲欧美一区 | 久久视频在线观看 | wwwwwww黄| 久久一区国产 | 亚洲闷骚少妇在线观看网站 | 国产精品亚州 | 综合中文字幕 | 久久精品综合一区 | 日韩精品免费一区 | 久草在线视频精品 | 免费福利片 | 国产高清永久免费 | 成人动漫精品一区二区 | 欧美午夜久久 | 在线免费视频你懂的 | 欧美 高跟鞋交 xxxxhd | 精品超碰 | 欧美片一区二区三区 | 成人午夜精品 | 99在线免费观看视频 | 国产精品淫片 | 中文字幕免费高清在线观看 | 国内精品久久久久影院男同志 | 日韩av中文字幕在线免费观看 | 国产中文字幕在线播放 | av成人动漫在线观看 | 国产香蕉视频在线观看 | 国产一区二区在线看 | 久久网站av | 国产精品av免费在线观看 | 中文字幕日韩精品有码视频 | 黄a网站 | 国产亚洲aⅴaaaaaa毛片 | 天天激情站 | 色五丁香 | 国产成人精品日本亚洲999 | 日本高清dvd | 久久免费视频播放 | 日韩高清免费在线观看 | 一区二区三区四区不卡 | 97视频免费在线 | 亚洲理论片 | 日韩在线观看一区二区三区 | 国产一区二区在线观看免费 | 99精品在线直播 | 91成人免费视频 | 日本成人中文字幕在线观看 | 国产裸体永久免费视频网站 | 综合天天网| 国产精品一区免费看8c0m | 青青久草在线 | 黄在线| 免费在线观看视频一区 | 亚洲黄色小说网址 | 99超碰在线播放 | 亚洲精品大片www | 日批视频 | 91人人爽人人爽人人精88v | 91麻豆文化传媒在线观看 | 亚洲无吗天堂 | 99精品国产成人一区二区 | 国产一区福利在线 | 国产精品不卡一区 | a黄色| 国产欧美综合在线观看 | 欧美一进一出抽搐大尺度视频 | 日日夜精品 | 日本天天色 | 亚洲一区网 | 久久亚洲欧美 | 麻花豆传媒mv在线观看网站 | 国产成人精品一区二区三区在线观看 | 在线播放 日韩专区 | 国产99在线免费 | 特级a毛片| 国产精品久久久久久久久久久久午夜 | 91免费在线 | 欧美精品一二三 | 免费看一及片 | 欧美男同视频网站 | 国产做aⅴ在线视频播放 | 久久视屏网 | 午夜免费福利视频 | 日韩a级免费视频 | 国产第一页福利影院 | 国产最新视频在线观看 | 久青草视频在线观看 | av成人免费在线看 | 国产一区在线免费观看视频 | 亚洲精品在线网站 | 天天色天天色 | a在线观看视频 | 最近中文字幕国语免费高清6 | 一级一级一片免费 | 欧美激情视频一区二区三区免费 | 成人免费中文字幕 | 日韩深夜在线观看 | 综合伊人av| 久久久999| 日韩精品视频在线观看免费 | 免费进去里的视频 | 色噜噜狠狠色综合中国 | 免费观看av | 色综合综合 | 91视频在线播放视频 | 日本黄色免费大片 | 婷婷日日| 久久激五月天综合精品 | 国产黄色片免费观看 | 国产福利在线免费 | 国内免费久久久久久久久久久 | 91亚洲精品久久久蜜桃借种 | 国产123区在线观看 国产精品麻豆91 | 国产精品一区在线 | 亚洲精品99久久久久中文字幕 | 在线观看国产区 | 日本三级人妇 | 日韩一二三区不卡 | 一本一道久久a久久精品 | 久久在线视频在线 | 日本三级中文字幕在线观看 | 日日夜夜av | 午夜少妇av | 久久久精品免费观看 | 四虎亚洲精品 | 国产不卡视频在线播放 | 天堂网一区 | 五月婷婷久久丁香 | 黄色小网站免费看 | 国产91精品欧美 | 国内精品久久久久久久久久久 | .国产精品成人自产拍在线观看6 | 国产精品永久免费观看 | 999在线观看视频 | av在线电影播放 | 综合伊人av| 久久久久久久久久久综合 | 国产精品露脸在线 | 欧美在线aaa | 中文字幕在线观看1 | 日本h在线播放 | 婷婷丁香六月天 | 色综合久久久久综合体桃花网 | 欧美韩日视频 | 亚洲黄色a | 中文超碰字幕 | 久久久久区 | 国产原创在线 | 一级黄色在线视频 | 久久中文字幕在线视频 | 美女黄色网在线播放 | 96av麻豆蜜桃一区二区 | av品善网| 免费亚洲一区二区 | 色视频一区 | 免费午夜网站 | 成年人在线观看免费视频 | 久久97久久97精品免视看 | 国产资源精品 | www.夜夜骑.com| 国产精品 久久 | 欧美日韩中文字幕在线视频 | 国产精品 日本 | 69热国产视频 | 91| 久久这里只有精品久久 | 日韩欧美一区二区三区黑寡妇 | 中文字幕色在线视频 | 国产精品免费一区二区三区 | 久久久久久久久久影院 | 久久久久久久久久福利 | 最新久久久 | 99视频精品免费视频 | 又色又爽又激情的59视频 | 一区二区精品视频 | 一区 二区 精品 | 五月婷婷天堂 | 激情婷婷六月 | av黄色免费网站 | 久久国产三级 | 成年人免费观看在线视频 | 国产精品 日韩精品 | 亚洲精品影视在线观看 | 亚洲日本精品视频 | 五月婷婷色综合 | 国产精品99久久久久久久久久久久 | 久久国产精品免费视频 | 91视频在线观看下载 | 亚洲一级理论片 | 亚洲国产精品500在线观看 | 在线免费观看视频一区 | 国产精品久久99精品毛片三a | 99色在线视频| 久久99精品国产91久久来源 | 亚洲成人av一区 | 亚洲成人免费在线 | 免费观看高清 | 日韩av电影免费观看 | 爱情影院aqdy鲁丝片二区 | 四虎国产精 | 色99视频| 美女视频国产 | 毛片www| www.黄色片网站 | 婷婷五月色综合 | 色全色在线资源网 | 91人人澡人人爽 | 国产成人777777| 欧美日韩有码 | 日日操日日插 | 伊人婷婷色 | 国产精品久久视频 | 国产一及片 | 日韩在线一级 | 香蕉视频亚洲 | 毛片一区二区 | 一本色道久久综合亚洲二区三区 | 日本aaaa级毛片在线看 | 天天综合中文 | 国产精品嫩草影院99网站 | 91精品爽啪蜜夜国产在线播放 | 奇米777777 | 亚洲人成免费 | 国产精品成人国产乱 | 操处女逼 | 综合久久久久久 | 伊人六月 | 国产原创在线观看 | 亚洲成人av一区二区 | av黄色大片| 国产麻豆剧传媒免费观看 | 成年人在线免费看片 | 五月天丁香综合 | 久久视频免费在线观看 | 草在线视频 | 射射射av | 国产v在线播放 | 91av中文 | 国产一级免费在线观看 | 亚洲精品视频在线免费 | 69国产成人综合久久精品欧美 | 国产精品a成v人在线播放 | 亚洲欧美日韩一级 | 欧美二区三区91 | 欧美日韩免费观看一区二区三区 | 日韩免费在线 | 久久中国精品 | 天天色综合三 | 热久久影视 | 在线亚洲欧美日韩 | 成人久久精品 | 夜夜婷婷| 99久久精品国产一区二区成人 | 精品久久视频 | 欧洲精品在线视频 | 456成人精品影院 | 国产大片免费久久 | 免费久久网站 | 国产精品一级在线 | 中文字幕 第二区 | 日本中文字幕在线播放 | 欧美精品视 | 亚洲一级二级三级 | 五月天亚洲综合小说网 | 日韩 国产| 狠狠干五月天 | 国产一区二区久久久久 | 97av.com | 天堂黄色片 | 中文字幕在线看视频 | av在线com| 国产视频 亚洲视频 | 天堂av在线免费 | 国产美女免费观看 | 深夜免费福利视频 | 成+人+色综合| 成人免费一区二区三区在线观看 | 少妇资源站 | 日韩久久久久久久久久久久 | 国际精品久久久久 | 男女拍拍免费视频 | 91天堂在线观看 | 亚洲日日日| 亚洲毛片一区二区三区 | 久久99热精品这里久久精品 | 香蕉视频最新网址 | 久久久久久久久久久影院 | 久久综合九色综合97婷婷女人 | 国产视频一二区 | 成人影片在线免费观看 | 久操免费视频 | 成人一区二区三区中文字幕 | 91av在线视频免费观看 | 国产精品一区二区久久久久 | 激情久久一区二区三区 | 黄色特一级片 | 日韩高清一区在线 | 97超碰在线播放 | 日本中文字幕免费观看 | 天天看天天干 | 日韩精品免费一区二区在线观看 | 国产在线精品国自产拍影院 | 日韩在线观看三区 | 一区三区视频在线观看 | 午夜三级毛片 | 国产不卡免费视频 | 国产视频一区在线免费观看 | 久久五月天婷婷 | 四虎在线免费 | 久久免费观看视频 | 伊人热| 国产成人专区 | 中文av网| 成人av地址 | 久久久久在线观看 | 欧美日韩国产精品爽爽 | 久久黄色成人 | 久久久久国产精品一区二区 | 亚洲午夜av | 麻豆精品传媒视频 | 不卡av在线免费观看 | 91久久精品日日躁夜夜躁国产 | 日韩三级视频在线观看 | 国产一级不卡视频 | 天天舔天天搞 | 日韩视频欧美视频 | 狠狠干2018 | 日日夜夜精品视频天天综合网 | 欧美激情一区不卡 | 中文在线√天堂 | 在线免费av网| 国产精品毛片一区二区在线 | 草久在线视频 | www.色综合.com| 国产高清网站 | 国产美女网 | 亚洲欧美婷婷六月色综合 | 美女视频黄的免费的 | 在线播放第一页 | 国产精品久久久久久久久久ktv | 99精品视频免费观看视频 | 欧美中文字幕第一页 | 黄色av成人在线 | 亚洲永久精品在线 | 99视频国产精品免费观看 | 成人a毛片| 亚洲涩综合 | 天天se天天cao天天干 | 中文字幕在线播放日韩 | www.看片网站 | 在线成人一区 | 超碰在线色 | 青青草国产成人99久久 | 国产成人精品久久久久 | 久久一区二区三区国产精品 | 99在线国产 | 成人av资源在线 | 国产在线免费 |