一數據庫 |
Qt簡介(Build your world with Qt)編程 |
二windows |
Qt5.7.0的安裝瀏覽器 |
三網絡 |
Qt系統構造庫及經常使用類框架 |
四編程語言 |
信號(signal)與槽(slot)通訊機制函數 |
五工具 |
QtDesigner開發工具的使用佈局 |
六 |
登陸對話框程序的編寫 |
七 |
文件、文本的基本操做 |
八 |
字體、顏色對話框的使用 |
九 |
停靠/堆棧/分割窗口的介紹 |
十 |
QWebEngineWidgets的介紹 |
十一 |
圖表程序的開發 |
十二 |
記事本程序的開發 |
十三 |
基於QWebEngineView實現一個簡易的瀏覽器 |
一.Qt簡介
Qt是一個跨平臺的C++圖形用戶界面應用程序框架。它爲應用程序開發者提供創建藝術級圖形用戶界面所需的全部功能。它是徹底面向對象的,很容易擴展,而且容許真正的組件編程。
Qt按照不一樣的版本發行,分爲商業版和開源版。Qt商業版爲商業軟件提供開發,它們提供傳統商業軟件發行版而且提供在協議有效期內的免費升級和技術支持服務。而Qt開源版是爲了開發自由而設計的開放源碼軟件,它提供了和商業版本一樣的功能,在GNU通用公共許可證下,它是免費的。
Qt支持的主流平臺有:
MS/Windows------9五、9八、NT4.0、windows7/8/10/XP;
UNIX/X11------Linux、Sun Solaris、HP-UX、CompaqTru64 UNIX、IBM AIX、SGI IRIX和其餘不少X11平臺;
Macintosh------Mac OS X;
Embedded------有幀緩衝(framebuffer)支持的Linux平臺、Windows CE。
2、Qt5.7.0的安裝
本文主要介紹Qt5.7.0 for windows 64-bit(VS2013,904MB)開發工具在Windows 10 Professional OS環境下的安裝。下載網址:https://www.qt.io/download-open-source/#section-2。須要下載的安裝包以下圖1和圖2所示。
安裝步驟:
step1:首先安裝Qt5.7.0 for windows 64-bit(VS2013,904MB);
step2:其次安裝Visual Studio Add-in 1.2.5 for Qt5插件;
step3:系統環境變量配置;
step4:創建Qt工程驗證安裝成功。
安裝圖解:
須申請註冊一個Qt Account,方可進入安裝界面如圖3-圖6所示;
圖3
安裝完成後,配置系統環境變量,以下圖7所示;
打開VS2013後,會在菜單欄顯示Qt5,依次點擊Qt5->Qt Options->Add,而後按下圖8紅色區域填寫相應內容;
配置成功後,會有以下圖9和圖10所示內容。
創建Qt工程
創建工程(QHello)圖解以下圖11所示:
圖11
圖12
圖13
圖14
工程創建好之後,雙擊解決方案列表中的Form Files->qhello.ui進入Qt Designer設計師界面,而後從Qt designer 佈局界面的左側部件編輯區域中(Widget Box)中拖拽一個PushButton 到主界面上,單擊右鍵更改其顯示文本爲Hello Qt以及對象名稱爲helloQtBtn。固然你還能夠經過更改樣式表改變控件的顏色、字體、大小,背景圖片等元素。,這裏我給主窗口加了一副Border imag圖片,目的是爲了適應窗口大小的改變,界面佈局以下圖15所示。
圖15
主界面佈局完成後,再在Qt Designer設計師界面中新建一個qtdlg.ui的對話框,而後從Widget Box中拖拽一個Label控件,更改其文本顯示爲:Build your world with Qt,一樣的能夠更改其樣式表修改或添加你喜好的風格。這裏佈局的界面以下圖16所示。
qtdlg.ui佈局完成後,將它添加到解決方案中Form files目錄下與qhello.ui並列,而後編譯,編譯完成後會在解決方案中的Generated Files 目錄下生成一個ui_qtdlg.h的文件。此時,分別添加一個qtdlg.h頭文件和一個qtdlg.cpp源文件。
而後添加相應的內容,這裏面有一個技巧:qtdlg.h裏的內容能夠從qhello.h裏複製,而後作對應的更改(只要學過C++的應該都會,默認你們都會了),同理qtdlg.cpp裏的內容也能夠參照qhello.cpp文件裏的內容修改,其實也就是一個構造函數和一個析構函數的添加,基類改爲QDialog,相關頭文件也要作相應更改。再次編譯成功後,須要在qhello.h文件中包含頭文件#include」qtdlg.h」,在下面的QHello類中定義一個私有槽[ private slots:void helloQtBtnSlot();]用來與Hello Qt這個pushbutton進行通訊。代碼:
void QHello::helloQtBtnSlot()
{
Qtdlg *dlg=new Qtdlg;//非模態對話框
dlg ->show();
}
而後須要在QHello構造函數中用connect函數作一個鏈接,代碼:
QObject::connect(ui.helloQtBtn,SIGNAL(clicked()),this,SLOT(helloQtBtnSlot()));
最後按F5調試運行,點擊Hello Qt,彈出一個帶有Build your world with Qt字樣的對話框。如上圖15和16所示。
3、Qt系統構造庫及類
Qt系統主要有如下模塊構成,以下表一所示:
ActiveQt |
Qt中活動控件類模塊,包含ActiveX和COM |
Qt3DCore |
Qt3D仿真框架的基礎類模塊 |
Qt3DInput |
Qt3D輸入類模塊 |
Qt3DLogic |
Qt幀同步類模塊 |
Qt3DQuick |
使用QML處理3D內容,基於OpenGL |
Qt3DQuickInput |
Qt3DQuick輸入類模塊 |
Qt3DQuickRender |
Qt3DQuick渲染類模塊 |
Qt3DRender |
Qt3D渲染類模塊 |
QtANGLE |
提供OpenGL驅動或Directx驅動的類模塊 |
QtBluetooth |
Qt藍牙通訊類模塊 |
QtCharts |
Qt 圖表組件庫類模塊 |
QtCLucene |
Qt文本搜索引擎類模塊 |
QtConcurrent |
Qt高層次API類模塊 |
QtCore |
Qt核心非GUI類模塊 |
QtDataVisualization |
Qt可視化編程類模塊 |
QtDBus |
Qt高級進程間通訊機制類模塊 |
QtDesigner |
Qt設計師類模塊 |
QtDesignerComponents |
Qt設計師組件類模塊 |
QtGamepad |
Qt遊戲手柄類模塊 |
QtGui |
Qt核心GUI類模塊 |
QtHelp |
Qt幫助類模塊 |
QtLocation |
Qt地圖場景類模塊 |
QtMultimedia |
Qt多媒體類模塊 |
QtMultimediaWidgets |
Qt多媒體控件類模塊 |
QtNetwork |
Qt網絡類模塊 |
QtNfc |
Qt近場通訊類模塊 |
QtOpenGL |
Qt開源圖形庫類模塊 |
QtOpenGLExtensions |
Qt開源圖形庫拓展類模塊 |
QtPacketProtocol |
Qt網絡驅動協議類模塊 |
QtPlatformHeaders |
Qt平臺標題類模塊 |
QtPlatformSupport |
Qt平臺支持類模塊 |
QtPositioning |
Qt定位類模塊 |
QtPrintSupport |
Qt打印支持類模塊 |
QtPurchasing |
Qt採購類模塊 |
QtQml |
QtQml主要實現與JavaScript集成 |
QtQmlDebug |
Qml調試類模塊 |
QtQmlDevTools |
Qml開發支持類模塊 |
QtQuick |
編寫Qml應用標準類庫 |
QtQuickControls2 |
QtQuick控件模塊 |
QtQuickParticles |
QtQuick粒子類模塊 |
QtQuickTemplates2 |
QtQuick模板類庫模塊 |
QtQuickTest |
QtQuick測試類模塊 |
QtQuickWidgets |
QtQuick部件類模塊 |
QtScript |
Qt腳本類模塊 |
QtScriptTools |
Qt腳本工具類模塊 |
QtScxml |
Qt腳本可擴展編程語言類模塊 |
QtSensors |
Qt傳感器類模塊 |
QtSerialBus |
Qt串行總線類模塊 |
QtSerialPort |
Qt串口類模塊 |
QtSql |
Qt數據庫類模塊 |
QtSvg |
Qt透視圖類模塊 |
QtTest |
Qt測試類模塊 |
QtUiPlugin |
QtUi插件類模塊 |
QtUiTools |
QtUi工具類模塊 |
QtWebChannel |
Qt網絡通訊類模塊 |
QtWebEngine |
Qt網絡引擎類模塊 |
QtWebEngineCore |
Qt網絡引擎核心非Gui類模塊 |
QtWebEngineWidgets |
Qt網絡引擎核心Gui類模塊 |
QtWebSockets |
Qt網絡套接字類模塊 |
QtWebView |
Qt網絡視圖類模塊 |
QtWidgets |
Qt部件編程類模塊 |
QtXml |
Qt可擴展標記語言模塊 |
QtXmlPatterns |
QtXml模式類模塊 |
QtZlib |
Qt壓縮/解壓類模塊 |
經常使用到的類以下表2所示:
主要的類 |
描述 |
抽象窗口部件類 |
抽象窗口部件類是經過子類來使用的 |
高級窗口部件類 |
高級的GUI窗口部件,好比列表視圖、進度條等 |
基本窗口部件類 |
基本的GUI窗口部件,好比按鈕、組合框、滾動條 |
數據庫類 |
與數據庫相關的類,好比與SQL數據庫相關的類 |
日期與時間類 |
處理日期與時間的類 |
事件類 |
用來生成和處理事件的類 |
環境類 |
提供了多樣全面的服務,好比事件處理,系統設置等 |
佈局管理類 |
調整窗口部件大小的位置,可以構成複雜對話框的類 |
共享類 |
爲了快速複製而引用計數的類 |
幫助系統類 |
用來給應用程序提供在線幫助的類 |
多媒體、圖形、打印類 |
處理圖形(2D,3D、OpenGL)和圖像的編碼和解碼以及提供聲音,動畫、打印等服務 |
4、信號(signal)與槽(slot)通訊機制
Qt提供了一種信號和槽的通訊機制用於完成界面操做的響應,經過connect函數完成任意兩個Qt對象之間的通訊。其中,信號會在某個特定的狀況或動做下被觸發,槽是等同於接收並處理信號的函數。以下圖17所示Qt中信號與槽的通訊機制示意圖
觀上圖可知信號與槽的通訊方式:
1. 同一個信號能夠與多個槽相連
2.同一個槽能夠響應多個信號
5、QtDesigner開發工具的使用
熟悉Qtdesigner界面開發環境,如圖18所示。
圖18
6、登陸對話框程序的編寫
界面以下圖19所示。(代碼就補貼了( ̄▽ ̄)")
圖19
主要代碼:
//登陸到主界面
void Dialog::on_signInBtn_clicked()
{
if (ui->userlineEdit->text() == "hello"&&ui->passwordlineEdit->text() == "qt2016")
{
logindlg = new MainWindow;
logindlg->show();
this->close();
}
else
{
QMessageBox::information(this, "登陸失敗", "用戶名或密碼錯誤請從新登陸");
return;
}
}
主界面
以下圖20所示。
未完待續~