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.hqwc.cn/news/263868.html

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

相关文章

面试官:Jmeter 命令行压测 生成 HTML 测试报告,你真的会?

通常 Jmeter 的 GUI 模式仅用于调试&#xff0c;在实际的压测项目中&#xff0c;为了让压测机有更好的性能&#xff0c;多用 Jmeter 命令行来进行压测。 同时&#xff0c;JMeter 也支持生成 HTML 测试报告&#xff0c; 以便从测试计划中获得图表和统计信息。 以上定义的文件路…

SVN修改已提交版本的日志方法

1.在工做中一直是使用svn进行項目的版本控制的&#xff0c;有时候因为提交匆忙&#xff0c;或是忘了添加Log&#xff0c;或是Log内容有错误。遇到此类状况&#xff0c;想要在查看项目的日志时添加log或是修改log内容&#xff0c;遇到以下错误&#xff1a; Repository has not b…

【Java Web学习笔记】5 - XML

项目代码 https://github.com/yinhai1114/JavaWeb_LearningCode/tree/main/xml 零、在线文档 XML系列教程 一、XML引出 1.为什么需要XML 1.需求1 :两个程序间进行数据通信? 2.需求2:给一台服务器&#xff0c;做一个配置文件&#xff0c;当服务器程序启动时&#xff0c;去…

最新版ES8的client api操作,Elasticsearch Java client 8.0

Elasticsearch Java client 8.0 Elasticsearch&#xff1a;使用最新的 Elasticsearch Java client 8.0 来创建索引并搜索开始安装简单操作创建索引判断索引是否存在并创建索引&#xff08;构建器写法与lambda写法&#xff09;查询索引查询全部索引删除索引插入文档**使用原始 J…

【Java编程实现 9 * 9 乘法表格打印四种形态,七种打法】

Java编程实现 9 * 9 乘法表格打印四种形态&#xff0c;七种方法打印 废话篇打印 9 * 9 乘法表格嵌套for循环实现左下角打印嵌套for循环实现左上角打印嵌套for循环实现右上角打印嵌套for循环实现右下角打印 使用while循环打印 9 * 9 乘法表格&#xff08;一&#xff09;使用whil…

鸿蒙OS应用开发之语句

在程序开发中&#xff0c;已经有上面的运算符和数据类型了&#xff0c;可以满足了大部的需求&#xff0c;但是这些程序还是比较简单的计算和逻辑运算&#xff0c;如果需要复杂的计算和逻辑处理&#xff0c;就需要采用复杂逻辑程序块来处理了&#xff0c;也就是复杂条件语句才能…

【W5500】关于使用外部网络变压器的原理图设计

直接上原理图 链接也放一个吧【链接】 按照这个画&#xff0c;我实验在立创EDA上打了一个实验过是可以用的~ 画出来的板子长这个样子【就不公开原理图和PCB了&#xff0c;这个板子还是很容易画的】~ 注意在立创上找对网口&#xff0c;要无变压器的网口&#xff0c;相比TB卖的那…

小模型学习(1)-人脸识别

【写作背景】因为最近一直在研究大模型&#xff0c;在与客户进行交流时&#xff0c;如果要将大模型的变革性能力讲清楚&#xff0c;就一定要能将AI小模型的一些原理和效果讲清楚&#xff0c;进而形成对比。当然这不是一件简单的事情&#xff0c;一方面大模型分析问题的的本质原…

19 redis缓存数据同步问题

1、缓存穿透 指缓存和数据库中都没有的数据&#xff0c;而用户不断发起请求。由于缓存不命中&#xff0c;并且出于容错考虑&#xff0c;如果从存储层查不到数据则不写入缓存&#xff0c;这将导致这个不存在的数据每次请求都要到存储层去查询&#xff0c;缓存就没有意义了。 在…

C语言精选——选择题Day42

第一题 1. 下面程序输出的结果是&#xff08;&#xff09; #include <stdio.h> int main () {int x;x printf("I See, Sea in C");printf("x%d" , x); } A&#xff1a;2 B&#xff1a;随机值 C&#xff1a;都不是 D&#xff1a;15 答案及解析 D p…

7.题目:编号1531 快递分拣

题目: ### 这道题主要考察map,vector,string的综合运用单号和城市都可以用string类型存储 #include <bits/stdc.h> using namespace std;map<string,vector<string>> mp;vector<string> citys;int main(){ios::sync_with_stdio(0),cin.tie(0),cout.t…

猿人学第三题 罗生门

思路 使用开发者工具进行抓包&#xff0c;验证数据请求的方式是什么&#xff0c;这里推荐大家使用浏览器自带的工具。 我们发现每次的翻页请求都会有一个jssm请求&#xff0c;这里我们先记录一下这个情况&#xff0c;现在观察一下cookie是否有变化。 这个实际上没有发生变化。…