Qt5.7學習

原文地址:https://www.cnblogs.com/kaikai-king/p/5996507.html

 

Qt簡介(Build your world with Qt)

Qt5.7.0的安裝

Qt系統構造庫及常用類

信號(signal)與槽(slot)通信機制

QtDesigner開發工具的使用

登錄對話框程序的編寫

文件、文本的基本操作

字體、顏色對話框的使用

停靠/堆棧/分割窗口的介紹

QWebEngineWidgets的介紹

十一

圖表程序的開發

十二

記事本程序的開發

十三

基於QWebEngineView實現一個簡易的瀏覽器

一.Qt簡介

Qt是一個跨平臺的C++圖形用戶界面應用程序框架。它爲應用程序開發者提供建立藝術級圖形用戶界面所需的所有功能。它是完全面向對象的,很容易擴展,並且允許真正的組件編程。

Qt按照不同的版本發行,分爲商業版和開源版。Qt商業版爲商業軟件提供開發,它們提供傳統商業軟件發行版並且提供在協議有效期內的免費升級和技術支持服務。而Qt開源版是爲了開發自由而設計的開放源碼軟件,它提供了和商業版本同樣的功能,在GNU通用公共許可證下,它是免費的。

Qt支持的主流平臺有:

MS/Windows------95、98、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。

二、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所示:

 

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

 

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

三、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)和圖像的編碼和解碼以及提供聲音,動畫、打印等服務

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

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

image

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

      1. 同一個信號可以與多個槽相連

      2.同一個槽可以響應多個信號

五、QtDesigner開發工具的使用

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

     

圖18

六、登錄對話框程序的編寫

      界面如下圖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所示。

 

未完待續~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章