浅谈QT用法

news/2024/11/14 4:54:41/

一、基本介绍

        C++ 是一种通用的、静态类型的、大小写敏感的、自由格式的编程语言,支持过程化编程、面向对象编程和泛型编程。它最初由 Bjarne Stroustrup 在 1979 年在贝尔实验室开始开发,目的是扩展和改进 C 语言。

Qt 是一个跨平台的 C++ 应用程序框架,用于开发具有图形用户界面的应用程序,以及非GUI程序,如控制台工具和服务器。Qt 是用 C++ 编写的,并且提供了一个叫做 Qt C++ 库的大型集合,它包含了各种控件、功能和模块,用于开发复杂的应用程序。

二、关键特性

1、跨平台:Qt 支持多种操作系统,包括 Windows、macOS、Linux、iOS 和 Android。

2、信号和槽机制:Qt 提供了一种独特的信号和槽机制,用于对象之间的通信,这使得 GUI 编程更加简单和直观。

3、丰富的控件和功能:Qt 提供了大量的预制控件和功能,如按钮、文本框、列表、图表等,以及文件处理、网络编程、数据库访问等模块。

4、QML 和 Qt Quick:Qt 提供了 QML(Qt Modeling Language),这是一种声明式编程语言,用于创建动态的 UI 和流畅的动画效果。

5、国际化和本地化:Qt 支持多语言应用程序的开发,可以轻松地添加和切换不同的语言。

6、Qt Creator:Qt 自带一个集成开发环境(IDE)Qt Creator,它提供了代码编辑、调试、项目管理等功能。

7、Qt for Device Creation:Qt 提供了一套工具和库,用于开发嵌入式和物联网(IoT)设备。

8、Qt 3D:Qt 提供了用于开发 3D 应用程序的模块。

9、Qt for WebAssembly:Qt 支持将应用程序编译为 WebAssembly,使得 Qt 应用程序可以在现代浏览器中运行。

三、代码示例

1. mainwindow.ui (使用 Qt Designer 设计的 UI 文件)

这个文件通常通过 Qt Designer 来创建和编辑,但这里我们假设它已经存在,并且包含了一个按钮(QPushButton)。

2. mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void on_pushButton_clicked();private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

3. mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(on_pushButton_clicked()));
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_pushButton_clicked()
{QMessageBox::information(this, "Hello", "Button Clicked!");
}

4. main.cpp

#include "mainwindow.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}

5. CMakeLists.txt (用于构建项目)

cmake_minimum_required(VERSION 3.5)project(HelloQt)set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 11)find_package(Qt5 COMPONENTS Core Gui Widgets REQUIRED)add_executable(HelloQt main.cpp mainwindow.cpp)target_link_libraries(HelloQt Qt5::Core Qt5::Gui Qt5::Widgets)

6. 构建和运行

1)确保你已经安装了 Qt 和 CMake。

2)将上述代码保存到相应的文件中。

3)在项目根目录下创建 CMakeLists.txt 文件,并填入上述 CMake 配置。

4)在终端中运行以下命令来构建项目:

mkdir build && cd build
cmake ..
make


http://www.ppmy.cn/news/1546840.html

相关文章

1小时构建Vue3知识体系之vue的生命周期函数

本文转载自&#xff1a;https://fangcaicoding.cn/course/12/63 大家好&#xff01;我是方才&#xff0c;目前是8人后端研发团队的负责人&#xff0c;拥有6年后端经验&3年团队管理经验。 系统学习践行者&#xff01;近期在系统化输出前端入门相关技术文章&#xff0c;期望能…

抽象工厂模式详解

1. 引言 1.1 设计模式概述 设计模式&#xff08;Design Patterns&#xff09;是软件开发中解决常见问题的一种最佳实践。它们通过总结经验&#xff0c;提供了一套被验证有效的代码结构和设计原则&#xff0c;帮助开发者提高代码的可维护性、可重用性和可扩展性。 设计模式主…

重学 Android 自定义 View 系列:动手实现专属 TextView

前言 前面一篇介绍了自定义View的基础概念(皮毛)&#xff0c;接下来全部是自定义View实战&#xff0c;让我们一起开启自定义View之旅吧&#xff01; 1. 实现目标 本篇将实现一个自定义的TextView&#xff0c;通过自定义属性让我们可以配置文本内容、颜色、字体大小。主要是掌…

命令行工具进阶指南

&#x1f680; 命令行工具进阶指南&#xff1a;Git、Shell与效率工具的进阶之路 掌握命令行工具&#xff0c;让你的开发效率突飞猛进。本文将深入探讨 Git 高级技巧、Shell 脚本自动化以及各种效率倍增的 CLI 工具。 &#x1f4d1; 目录 Git 高级技巧与工作流Shell 脚本自动化…

Python——飞机大战

以下是一个简单的用Python编写的飞机大战游戏的源代码&#xff1a; import pygame import random# 初始化游戏 pygame.init()# 设置游戏窗口的尺寸 screen_width 480 screen_height 640 screen pygame.display.set_mode((screen_width, screen_height))# 设置游戏标题 pyga…

Prompt Engineering介绍

什么是Prompt Engineering&#xff1f; 近年来&#xff0c;大语言模型&#xff08;LLM&#xff09;发展迅速&#xff0c;成为自然语言处理领域的重要技术。除了OpenAI的GPT系列、Google的PaLM&#xff08;Pathways Language Model&#xff09;和Bard&#xff0c;国内也涌现出多…

ODOO学习笔记(7):模块化架构(按需安装)

一、Odoo模块化架构概述 Odoo是一个功能强大的企业资源规划&#xff08;ERP&#xff09;系统&#xff0c;其模块化架构是它的核心优势之一。这种架构允许系统通过添加、移除或修改不同的模块来灵活地适应企业的各种业务需求。 核心模块与自定义模块&#xff1a; Odoo本身带有一…

The Input data type is inconsistent with defined schema

INFO:__main__:上传音频文件 梦阳... INFO:__main__:加载音频文件 梦阳&#xff0c;采样率: 48000, 信号形状: torch.Size([2, 719872]) INFO:speechbrain.utils.parameter_transfer:Loading pretrained files for: embedding_model, mean_var_norm_emb, classifier, label_enc…