如何使用C++图形界面开发框架Qt创建一个应用程序?(Part 2)

Qt是目前最先进、最完整的跨平台C++开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。

点击获取Qt组件下载

在上文中(点击这里回顾>>),我们为大家介绍了用于构建项目的构建系统、如何使用项目向导等,本文将继续介绍如何选择要创建项目的类型。

选择项目类型

类别向导模板目的
应用程序(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”。

您可以添加和删除解释器,并清理对已卸载但仍显示在列表中的解释器的引用,此外还可以将解释器设置为默认使用。

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版本、类名、基类和类的源文件。

向导将导入文件添加到源文件中,以提供对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向导将类似的代码添加到源文件中,但是它不添加任何类,因此您需要自己添加并实例化它们。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值