Qt6.5类库实例大全:Qt Creator快速入门

哈喽大家好,我是20YC编程小二!扫码关注公众号,现在可免费领取《C++程序员》在线视频教程哦!#下面开始今天内容#


1. Qt Creator介绍

Qt Creator是一个轻量级的跨平台集成开发环境(IDE),专为使用Qt框架进行应用程序开发而设计。这个工具功能强大、易于使用、快速且高效,被广泛用于编写各种类型的应用程序,包括桌面应用程序、移动应用程序和嵌入式系统等。

Qt Creator提供的主要功能包括:

  • 可视化的界面设计器和代码编辑器:可以帮助开发者更快捷地创建复杂的用户界面和处理各种事件。
  • 调试工具:允许开发人员在代码中设置断点以及检查变量、堆栈和调用树等信息。
  • 版本控制工具:有助于开发团队协同工作。
  • 具有自动完成和智能提示功能:可以提高编程效率。
  • 支持多语言和跨平台的开发环境:可以满足不同开发者的需求。
  • 紧密集成的Qt框架:使得开发者可以更容易地管理和部署他们的应用程序。

此外,Qt Creator还具有强大的编辑器功能,如语法高亮、代码折叠、智能提示、自动完成和代码重构等。总的来说,Qt Creator是一个功能齐全、易于使用且高效的跨平台IDE,适用于各种类型的应用程序开发,特别是那些使用Qt框架的开发者。

2. 检查Qt构建套件(Kit)是否正常

如果刚安装第一次打开Qt Creator,先检查构建套件(Kit)是否正常。

点击【编辑(E)】->【Preferences...】菜单项,打开界面,左边选择【构建套件(Kit)】,如下图,默认找到MSVC 2019表示开发环境正常。

3. 新建第一个Qt GUI程序

  • 创建一个"Qt Widgets Application"项目

打开 Qt Creator,点击"创建项目..."按钮,打开界面,选择"Application (Qt)"->"Qt Widgets Application":

  • 输入项目名称和保存路径

输入项目"名称:"和"创建路径:",点击"下一步":

  • 选择使用CMake构建方式

选择"CMake"构建方式,点击"下一步":

  • 修改QMainWindow主界面类名、文件名

输入创建程序主界面类名称和文件等信息,默认即可,点击"下一步":

  • 选择翻译文件

没有翻译文件,默认进入"下一步":

  • 选择构建套件

选择"Desktop Qt 6.5.3 MSVC2019 64bit"编译构建,点击"下一步":

  • 选择版本控制系统,如Git、SVN等

暂时不添加到版本控制系统,点击"完成",创建第一个GUI程序:

  • Qt 项目文件结构

Qt 项目文件清单如下:

4. Qt Creator主界面介绍

  • Qt Creator主界面布局

Qt Creator主界面布局介绍如下:

  • 切换到编辑模式

编辑模式:用于修改源文件等。

  • 切换到调试模式

调试模式:方便查看调试信息等。

  • 切换到项目模式

项目模式:可以查看和修改项目配置信息。

5. 添加按钮和实现弹出消息框

  • 打开mainwindow.ui窗体设计文件

在【项目】文件结构里面,鼠标双击"mainwindow.ui"文件:

  • 添加 Push Button 按钮

鼠标拖一个"Push Button"按钮到中间对话框设计界面上:

  • .h 头文件添加槽函数

什么是槽函数:某个信号(或消息、事件等)的具体实现函数叫槽函数。

例如Pusu Button按钮点击的时候,会发射一个QPushButton::clicked()信号,界面类就可以利用槽函数来响应信号,编写按钮触发的业务逻辑代码。

public slots: // slots 用于修饰以下所有函数为槽函数// 槽函数void slotPushButtonClicked(bool checked = false);
  • .cpp 文件实现槽函数功能
// 槽函数实现
void MainWindow::slotPushButtonClicked(bool checked)
{QMessageBox::information(this, "提示信息", "第一个弹框例子");
}
  • 修改按钮显示名称
// 修改按钮显示名称
ui->pushButton->setText("点击我");
  • 连接按钮点击事件

connect() 连接简单理解就是绑定的意思。

通过connect()连接函数,把Push Button按钮的QPushButton::clicked()信号,和槽函数slotPushButtonClicked()连接到一起,当按钮点击事件clicked()信号发射时,slotPushButtonClicked()函数就相应的执行。

// 连接按钮的 clicked 点击事件到 slotPushButtonClicked 槽函数
connect(ui->pushButton, &QPushButton::clicked, this, &MainWindow::slotPushButtonClicked);
  • mainwindow.h完整代码
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECT
public:MainWindow(QWidget *parent = nullptr);~MainWindow();
//添加以下二行代码
public slots:    // slots 用于修饰以下所有函数为槽函数// 槽函数void slotPushButtonClicked(bool checked = false);private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
  • mainwindow.cpp完整代码
#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include <QMessageBox>  // 使用 QMessageBox 弹出信息框,需要包含头文件MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 修改按钮显示名称ui->pushButton->setText("点击我");// 连接按钮的 clicked 点击事件到 slotPushButtonClicked 槽函数connect(ui->pushButton, &QPushButton::clicked, this, &MainWindow::slotPushButtonClicked);
}MainWindow::~MainWindow()
{delete ui;
}// 槽函数实现
void MainWindow::slotPushButtonClicked(bool checked)
{QMessageBox::information(this, "提示信息", "第一个弹框例子");
}
  • 构建(编译)项目

选择菜单【构建】->【构建项目"lesson01"】,或按"Ctrl+B"编译项目:

  • 运行程序

点击以下按钮,或按"Ctrl+R"运行程序:

程序运行结果:

6. 扩展知识:CMake介绍

CMake是一个跨平台的编译(构建)工具,可以用简单的语句来描述所有平台的编译过程。CMake能够输出各种各样的Makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。

CMake的配置文件是CMakeLists.txt,CMake不会直接建构出最终的软件,而是产生标准的建构档(如Unix的Makefile或Windows Visual C++的projects/workspaces),然后再依一般的建构方式使用。

Qt Creator利用CMake来帮助管理和构建C++程序的项目。

(lesson01)项目自动生成的CMakeLists.txt源码如下:

cmake_minimum_required(VERSION 3.5)project(lesson01 VERSION 0.1 LANGUAGES CXX)set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)set(PROJECT_SOURCESmain.cppmainwindow.cppmainwindow.hmainwindow.ui
)if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)qt_add_executable(lesson01MANUAL_FINALIZATION${PROJECT_SOURCES})
# Define target properties for Android with Qt 6 as:
#    set_property(TARGET lesson01 APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
#                 ${CMAKE_CURRENT_SOURCE_DIR}/android)
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
else()if(ANDROID)add_library(lesson01 SHARED${PROJECT_SOURCES})
# Define properties for Android with Qt 5 after find_package() calls as:
#    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")else()add_executable(lesson01${PROJECT_SOURCES})endif()
endif()target_link_libraries(lesson01 PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
# If you are developing for iOS or macOS you should consider setting an
# explicit, fixed bundle identifier manually though.
if(${QT_VERSION} VERSION_LESS 6.1.0)set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER com.example.lesson01)
endif()
set_target_properties(lesson01 PROPERTIES${BUNDLE_ID_OPTION}MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}MACOSX_BUNDLE TRUEWIN32_EXECUTABLE TRUE
)include(GNUInstallDirs)
install(TARGETS lesson01BUNDLE DESTINATION .LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)if(QT_VERSION_MAJOR EQUAL 6)qt_finalize_executable(lesson01)
endif()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/212111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NAND闪存市场2023年Q3增长2.9%,Q4有望激增20%

TrendForce报告显示&#xff0c;NAND闪存市场在2023年第三季度出现了关键转折&#xff0c;主要由三星的战略性减产决定驱动。最初&#xff0c;市场对终端用户需求的不确定性以及对平淡旺季的担忧导致买家采取保守的方法&#xff0c;库存低、采购慢。然而&#xff0c;随着三星等…

华为新款笔记本搭载5nm麒麟芯片,来源成谜,可能让大家失望了~

近日&#xff0c;华为公司悄悄推出了一款基于国产技术打造的全新商用笔记本——华为擎云L540。目前&#xff0c;华为擎云L540在京东平台悄然上线的&#xff0c;尚未在华为官方渠道公开售卖。华为擎云L540搭载了麒麟9006C处理器&#xff0c;采用先进的5nm制程工艺&#xff0c;8 …

openGauss学习笔记-150 openGauss 数据库运维-备份与恢复-物理备份与恢复之gs_backup

文章目录 openGauss学习笔记-150 openGauss 数据库运维-备份与恢复-物理备份与恢复之gs_backup150.1 背景信息150.2 前提条件150.3 语法150.4 参数说明150.5 示例 openGauss学习笔记-150 openGauss 数据库运维-备份与恢复-物理备份与恢复之gs_backup 150.1 背景信息 openGaus…

错题总结(四)

1.【一维数组】输入10个整数&#xff0c;求平均值 编写一个程序&#xff0c;从用户输入中读取10个整数并存储在一个数组中。然后&#xff0c;计算并输出这些整数的平均值。 int main() {int arr[10];int sum 0;for (int n 0; n < 10; n){scanf("%d", &arr…

[完美解决]Accelerate设置单卡训练报错,成功设置单卡训练

报错内容 ValueError: Less than two GPU ids were configured and tried to run on on multiple GPUs. Please ensure at least two are specified for --gpu_ids, or use --gpu_idsall. ValueError:配置了少于两个GPU id&#xff0c;并试图在多个GPU上运行。请确保为——gpu…

小黑子——springBoot基础

springBoot简单学习 一、SpringBoot简介1.1 springBoot快速入门1.1.1 开发步骤1.1.2 对比1.1.3 官网构建工程1.1.3 SpringBoot工程快速启动 1.2 springBoot概述1.2.1 起步依赖I. 探索父工程II. 探索依赖III. 小结 1.2.2 程序启动1.2.3 切换web服务器-jetty 二、配置文件2.1 配置…

scala变量与变量类型

1.6 变量与类型&#xff08;重点&#xff09;1.6.1 变量推断1.6.2 多变量定义1.6.3 var和val的区别 1.6.3.1 是否可变 1.6.3.2 延迟加载 1.6 变量与类型&#xff08;重点&#xff09; val修饰的变量&#xff0c;相当于Java中final修饰的变量; // 定义常量s1&#xff0c;使用…

[每周一更]-(第76期):Go源码阅读与分析的方式

读源码可以深层理解Go的编写方式&#xff0c;理解作者们的思维方式&#xff1b;也有助于对Go语法用法深刻的理解&#xff0c;我们从这一篇说一下如何读源码&#xff0c;从哪些源码着手&#xff0c;从 简单到深入的方式学习源码&#xff1b; 学习源码也是一个修炼过程&#xff0…

「斗破年番」卡点侠萧炎又卡点救人,四长老毒气攻心,黑皇城寻宝

Hello,小伙伴们&#xff0c;我是拾荒君。 《斗破苍穹年番》第74集如约而至&#xff0c;带给观众们更多的惊喜与感动。这一集中&#xff0c;萧炎的体内魔毒斑暂时被厄难毒体所压制&#xff0c;他决定回到迦南学院&#xff0c;寻求斗尊强者的帮助解决这个问题。然而&#xff0c;…

【LeetCode热题100】【滑动窗口】找到字符串中所有字母异位词

给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串&#xff08;包括相同的字符串&#xff09;。 示例 1: 输入: s "cbaebabacd", p "…

611.有效的三角形个数

1.题目解析 给定一个包含非负整数的数组 nums &#xff0c;返回其中可以组成三角形三条边的三元组个数。 补充&#xff1a; 1.三角形的判断&#xff1a;假设有三条边按大小排序&#xff1a; 2.题目示例 示例 1: 输入: nums [2,2,3,4] 输出: 3 解释:有效的组合是: 2,3,4 (使用…

C现代方法(第27章)笔记——C99对数学计算的新增支持

文章目录 第27章 C99对数学计算的新增支持27.1 <stdint.h>: 整数类型(C99)27.1.1 <stdint.h>类型27.1.2 对指定宽度整数类型的限制27.1.3 对其他整数类型的限制27.1.4 用于整型常量的宏 27.2 <inttype.h>: 整数类型的格式转换(C99)27.2.1 用于格式指定符的宏…

人工智能与自然语言处理

人工智能&#xff08;AI&#xff09;与自然语言处理&#xff08;NLP&#xff09;是当前科技领域的两大热门话题。人工智能通过模拟人类的思维过程和智能行为&#xff0c;使计算机具备了一定的智能和自学能力。而自然语言处理则是指计算机对人类语言进行理解、处理和生成的技术。…

PCIe MPS参数介绍及如何更改

目录 1.简介 2.主要功能作用 3.MPS控制策略 4.如何更改 1.简介 MPS 该参数含义是一个TLP包里携带的有效净荷的最大值是多少字节&#xff08;该限制条件同时适用于写操作和读操作&#xff09;。 MRRS 该参数含义是一个TLP读请求包&#xff0c;一次最多能向接收端请求读出…

计算机毕业设计JAVA+SSM+springboot养老院管理系统

设计了养老院管理系统&#xff0c;该系统包括管理员&#xff0c;医护人员和老人三部分。同时还能为用户提供一个方便实用的养老院管理系统&#xff0c;管理员在使用本系统时&#xff0c;可以通过系统管理员界面管理用户的信息&#xff0c;也可以进行个人中心&#xff0c;医护等…

LeetCode 108. 将有序数组转换为二叉搜索树

对于算法题&#xff0c;按题型类别刷题才会更有成效&#xff0c;因此我这里在网上搜索并参考了下 “&#x1f525; LeetCode 热题 HOT 100” 的题型归类&#xff0c;并在其基础上做了一定的完善&#xff0c;希望能够记录自己的刷题历程&#xff0c;有所收获&#xff01;点击下发…

点滴生活记录2

我从小跟着我爷爷奶奶&#xff0c;小学六年级转到县城上小学&#xff0c;就没跟我奶奶他们住一起了。十一回家&#xff0c;把奶奶接到我这住&#xff0c;细想&#xff0c;自六年级之后&#xff0c;就很少跟奶奶住一起了。 奶奶&#xff08;间歇性&#xff09;耳聋&#xff0c;为…

软件测试相关

软件测试是什么&#xff1f; 使用人工和自动手段来运行或测试某个系统的过程&#xff0c;其目的在于验证它是否满足规定的需求或弄清预期结果与实际结果的差别。 为什么做软件测试&#xff1f;目的是什么&#xff1f; 发现软件存在的代码或业务逻辑错误 检验产品是否符合用户需…

坚鹏:中国邮政储蓄银行数字化转型战略、方法与案例培训

中国邮政储蓄银行拥有优良的资产质量和显著的成长潜力&#xff0c;是中国领先的大型零售银行。2016年9月在香港联交所挂牌上市&#xff0c;2019年12月在上交所挂牌上市。中国邮政储蓄银行拥有近4万个营业网点&#xff0c;服务个人客户超6.5亿户。2022年&#xff0c;在《银行家》…

算法Day24 不专心开车

不专心开车 Description 小硕开车经过一条公路&#xff0c;这条路线总共由n 1个不同海拔的点组成。小硕从海拔为0的点0开始骑行。 给小硕一个长度为n的整数数组arr&#xff0c;其中arr[i]是点i和点i 1的净海拔高度差&#xff08;0≤i < n&#xff09;。请你返回最高点的海…