Qt5.7學習

數據庫

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所示。

image

image

安裝步驟:

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所示;

image

                                                                                                      圖3

image

image

image

  安裝完成後,配置系統環境變量,以下圖7所示;

image

打開VS2013後,會在菜單欄顯示Qt5,依次點擊Qt5->Qt Options->Add,而後按下圖8紅色區域填寫相應內容;

image

配置成功後,會有以下圖9和圖10所示內容。

image

image

 

創建Qt工程

       創建工程(QHello)圖解以下圖11所示:

 image

圖11

image

圖12

image

圖13

image

圖14

工程創建好之後,雙擊解決方案列表中的Form Files->qhello.ui進入Qt Designer設計師界面,而後從Qt designer 佈局界面的左側部件編輯區域中(Widget Box)中拖拽一個PushButton 到主界面上,單擊右鍵更改其顯示文本爲Hello Qt以及對象名稱爲helloQtBtn。固然你還能夠經過更改樣式表改變控件的顏色、字體、大小,背景圖片等元素。,這裏我給主窗口加了一副Border imag圖片,目的是爲了適應窗口大小的改變,界面佈局以下圖15所示。

image

圖15

主界面佈局完成後,再在Qt Designer設計師界面中新建一個qtdlg.ui的對話框,而後從Widget Box中拖拽一個Label控件,更改其文本顯示爲:Build your world with Qt,一樣的能夠更改其樣式表修改或添加你喜好的風格。這裏佈局的界面以下圖16所示。

image

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系統主要有如下模塊構成,以下表一所示:

表1: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所示:

表2:Qt編程經常使用類

主要的類

描述

抽象窗口部件類

抽象窗口部件類是經過子類來使用的

高級窗口部件類

高級的GUI窗口部件,好比列表視圖、進度條等

基本窗口部件類

基本的GUI窗口部件,好比按鈕、組合框、滾動條

數據庫類

與數據庫相關的類,好比與SQL數據庫相關的類

日期與時間類

處理日期與時間的類

事件類

用來生成和處理事件的類

環境類

提供了多樣全面的服務,好比事件處理,系統設置等

佈局管理類

調整窗口部件大小的位置,可以構成複雜對話框的類

共享類

爲了快速複製而引用計數的類

幫助系統類

用來給應用程序提供在線幫助的類

多媒體、圖形、打印類

處理圖形(2D,3D、OpenGL)和圖像的編碼和解碼以及提供聲音,動畫、打印等服務

4、信號(signal)與槽(slot)通訊機制

Qt提供了一種信號和槽的通訊機制用於完成界面操做的響應,經過connect函數完成任意兩個Qt對象之間的通訊。其中,信號會在某個特定的狀況或動做下被觸發,槽是等同於接收並處理信號的函數。以下圖17所示Qt中信號與槽的通訊機制示意圖

image

觀上圖可知信號與槽的通訊方式:

      1. 同一個信號能夠與多個槽相連

      2.同一個槽能夠響應多個信號

5、QtDesigner開發工具的使用

       熟悉Qtdesigner界面開發環境,如圖18所示。

      image

圖18

6、登陸對話框程序的編寫

      界面以下圖19所示。(代碼就補貼了( ̄▽ ̄)")

image

圖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所示。

image

未完待續~

相關文章
相關標籤/搜索