天天看點

如何使用C++圖形界面開發架構Qt建立一個應用程式?(Part 2)

作者:慧都科技

Qt是目前最先進、最完整的跨平台C++開發工具。它不僅完全實作了一次編寫,所有平台無差别運作,更提供了幾乎所有開發過程中需要用到的工具。如今,Qt已被運用于超過70個行業、數千家企業,支援數百萬裝置及應用。

Qt 跨平台的 C++圖形使用者界面庫,最新版免費下載下傳,線上文檔,視訊教程,Qt正版購買-慧都網

在上文中(點選這裡回顧:如何使用C++圖形界面開發架構Qt建立一個應用程式?(Part 1)),我們為大家介紹了用于建構項目的建構系統、如何使用項目向導等,本文将繼續介紹如何選擇要建立項目的類型。

選擇項目類型

類别 向導模闆 目的
應用程式(Qt for MCU) MCU Support Application 建立一個應用程式,該應用程式使用Qt QML和Qt Quick Controls類型的子集(由Qt for MCU支援),您可以在MCU闆上部署、運作和調試。
應用程式(Qt) Qt Widgets Application 使用Qt Designer表單為桌面設計一個基于Qt小部件的使用者界面,并使用c++實作應用程式邏輯。
Qt Console Application 使用一個main.cpp檔案。
Qt Quick Application 建立一個Qt Quick 2應用程式項目,該項目可以包含QML和c++代碼。您可以建構應用程式并将其部署到桌面、嵌入式和移動目标平台。
應用程式(Qt for Python) Empty Application 建立一個Qt for Python應用程式,其中隻包含QApplication的主代碼。
Empty Window 建立一個Qt for Python應用程式,其中包含一個空視窗。
Window UI 建立一個Qt for Python應用程式,其中包含一個空視窗和一個基于小部件的UI。首選方法,需要您從.ui檔案生成一個Python檔案,以便将其直接導入到應用程式中。
Window UI - Dynamic load 建立一個Qt for Python應用程式,其中包含一個空視窗和一個基于小部件的UI。
Qt Quick 應用程式 - Empty 建立一個包含空Qt Quick Application的Python項目。
C++庫 一個基于qmake的共享或靜态c++庫。
Qt Quick 2擴充插件 建立一個c++插件,通過使用QQmlEngine類,可以提供可以動态加載到Qt Quick 2應用程式中的擴充。
Qt Creator插件 建立一個Qt Creator插件。
其他項目 Qt Custom Designer Widget 建立自定義Qt Designer小部件或小部件集合。
Qt Quick UI Prototype

使用包含主視圖的單個QML檔案建立Qt Quick UI項目,您可以在QML場景預覽工具中預覽Qt Quick 2 UI項目。不需要建構它們,因為它們不包含任何c++代碼。

隻有在進行原型設計時才使用此模闆,不能使用此模闆建立完整應用。

Qt Quick UI項目不能部署到嵌入式或移動目标平台。對于這些平台,應該建立Qt Quick應用程式。

Auto Test Project 為Qt或谷歌測試建立帶有樣闆代碼的項目。
Subdirs Project 建立子項目,該子項目使您能夠将qmake項目構造為樹形層次結構。
Empty qmake Project 建立一個基于qmake但不使用任何預設類的空qmake項目。
Code Snippet 從代碼片段建立qmake項目。在修複包含代碼段的錯誤報告時,可以将代碼段放入項目中進行編譯和檢查。
Non-Qt Project Plain C Application 建立一個使用qmake、Qbs或CMake但不使用Qt庫的普通C應用程式。
Plain C++ Application 建立一個使用qmake、Qbs或CMake但不使用Qt庫的普通c++應用程式。
Nim Application (experimental) 建立一個使用Nimble但不使用Qt庫的Nim應用程式。
Nimble Application (experimental) 建立一個使用Nimble但不使用Qt庫的Nimble應用程式。
導入項目 項目從版本控制 從受支援的版本控制系統(如Bazaar、CVS、Git、Mercurial或Subversion)導入項目。
導入為qmake或CMake項目(功能有限) 導入不使用任何支援的建構系統(qmake、Qbs、CMake或Autotools)的現有項目。該模闆建立一個項目檔案,它使您能夠使用Qt Creator作為代碼編輯器和調試和分析工具的啟動器。但是如果您想要建構項目,可能需要編輯生成的項目檔案。
導入現有的項目 導入不使用任何支援的建構系統(qmake、Qbs、CMake或Autotools)的現有項目,這使您能夠使用Qt Creator作為代碼編輯器。

要建立一個新項目,選擇File > New Project并選擇項目的類型,向導對話框的内容取決于項目類型和您在Kit Selection對話框中選擇的套件,按照向導的說明操作。

建立一個基于Qt Widget的Python應用程式

Qt for Python使您能夠在Python應用程式中使用Qt 6 API,可以使用PySide6子產品來通路單獨的Qt子產品,例如Qt Core、Qt GUI和Qt Widgets。

如果您還沒有安裝PySide6,Qt Creator會在項目建立後提示您安裝它。此外,它還提示您安裝提供代碼完成和注釋等服務的Python語言伺服器,選擇Install來安裝PySide6和語言伺服器。

若要檢視和管理可用的Python解釋器,請選擇“Edit > Preferences > Python > interpreters”。

如何使用C++圖形界面開發架構Qt建立一個應用程式?(Part 2)

您可以添加和删除解釋器,并清理對已解除安裝但仍顯示在清單中的解釋器的引用,此外還可以将解釋器設定為預設使用。

Qt for Python Application向導生成一個.pyproject檔案,其中列出了Python項目中的檔案,以及一個.py檔案,其中包含一些示例代碼。此外,基于小部件的UI向導會建立一個包含Qt Designer表單的.ui檔案,Qt Quick Application向導會建立一個包含Qt Quick控件的.qml檔案。

.pyproject檔案是基于json的配置檔案,它取代了以前使用的.pyqtc配置檔案。您仍然可以打開并使用.pyqtc檔案,但我們建議您為新項目選擇.pyproject檔案。

Window UI向導使您能夠建立包含類源檔案的Python項目。指定PySide版本、類名、基類和類的源檔案。

如何使用C++圖形界面開發架構Qt建立一個應用程式?(Part 2)

向導将導入檔案添加到源檔案中,以提供對QApplication、在Qt Widgets子產品中選擇的基類和Qt UI工具的通路:

import sys

from PySide6.QtWidgets import QApplication, QWidget           

注意:首先要從UI表單建立Python代碼,這一點很重要。在PySide6中,可以通過在終端執行pyside6-uic form.ui -o ui_form.py來實作這一點,這使您能夠從該Python檔案導入表示UI的類。

一旦從UI檔案生成Python代碼,就可以導入這個類:

from ui_form import Ui_Widget           

該向導還添加一個具有指定名稱的主類,從指定的基類繼承:

class Widget(QWidget):
def __init__(self, parent=None):
super().__init__(parent)           

主類中的以下行從UI檔案執行個體化生成的Python類,并為目前類設定接口。

self.ui = Ui_Widget()
self.ui.setupUi(self)           

注意:新類的UI元素可以作為成員變量通路。例如,如果您有一個名為button1的按鈕,可以使用self.ui.button1與它互動。

接下來,向導添加一個主函數,在其中建立一個QApplication 執行個體。因為Qt可以從指令行接收參數,是以您可以将任何參數傳遞給QApplication對象。通常,您不需要傳遞任何參數,可以使用以下方法:

if __name__ == "__main__":
app = QApplication(sys.argv)           

接下來,向導執行個體化MainWindow類并顯示它:

widget = Widget()
widget.show()
...           

最後,向導調用app.exec()方法進入Qt主循環并開始執行Qt代碼:

sys.exit(app.exec())           

現在,您可以在Edit模式中修改示例代碼,來開發Python應用程式。選擇工具欄上的REPL啟動Python互動式shell,要啟動shell并将目前檔案作為子產品導入,請選擇select REPL import file。要從檔案中導入所有函數,請選擇REPL import *。

總是在修改UI檔案後重新生成Python代碼。

在Design模式下打開.ui檔案,在Qt Designer中建立一個基于小部件的UI。

Window向導将類似的代碼添加到源檔案中,但不添加UI位。

Empty向導将類似的代碼添加到源檔案中,但是它不添加任何類,是以您需要自己添加并執行個體化它們。

Qt元件推薦

  • QtitanRibbon - Ribbon UI元件:是一款遵循Microsoft Ribbon UI Paradigm for Qt技術的Ribbon UI元件,QtitanRibbon緻力于為Windows、Linux和Mac OS X提供功能完整的Ribbon元件。
  • QtitanChart - Qt類圖表元件:是一個C ++庫,代表一組控件,這些控件使您可以快速地為應用程式提供漂亮而豐富的圖表。
  • QtitanDataGrid - Qt網格元件:提供了一套完整的标準 QTableView 函數和傳統元件無法實作的獨特功能。使您能夠将不同來源的各類資料加載到一個快速、靈活且功能強大的可編輯網格中,支援排序、分組、報告、建立帶狀列、拖放按鈕和許多其他友善的功能。
  • QtitanDocking:允許您像 Visual Studio 一樣為您的偉大應用程式配備可停靠面闆和可停靠工具欄。黑色、白色、藍色調色闆完全支援 Visual Studio 2019 主題!

繼續閱讀