qt-C++笔记之使用Cmake来组织和构建QWidget工程项目

qt-C++笔记之使用Cmake来组织和构建QWidget工程项目

—— 杭州 2024-03-10


在这里插入图片描述

code review!

文章目录

  • qt-C++笔记之使用Cmake来组织和构建QWidget工程项目
    • 1.运行
    • 2.文件结构
    • 3.CMakeLists.txt
    • 4.main.cpp
    • 5.widget.h
    • 6.widget.cpp
    • 7.widget.ui

1.运行

在这里插入图片描述

2.文件结构

在这里插入图片描述

3.CMakeLists.txt

在这里插入图片描述

代码

cmake_minimum_required(VERSION 3.5)

project(qt_cmake_widget LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# QtCreator supports the following variables for Android, which are identical to qmake Android variables.
# Check http://doc.qt.io/qt-5/deployment-android.html for more information.
# They need to be set before the find_package(Qt5 ...) call.

#if(ANDROID)
#    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
#    if (ANDROID_ABI STREQUAL "armeabi-v7a")
#        set(ANDROID_EXTRA_LIBS
#            ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libcrypto.so
#            ${CMAKE_CURRENT_SOURCE_DIR}/path/to/libssl.so)
#    endif()
#endif()

find_package(Qt5 COMPONENTS Widgets REQUIRED)

if(ANDROID)
  add_library(qt_cmake_widget SHARED
    main.cpp
    widget.cpp
    widget.h
    widget.ui
  )
else()
  add_executable(qt_cmake_widget
    main.cpp
    widget.cpp
    widget.h
    widget.ui
  )
endif()

target_link_libraries(qt_cmake_widget PRIVATE Qt5::Widgets)

4.main.cpp

#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

5.widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

6.widget.cpp

#include "widget.h"
#include "./ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

7.widget.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Widget</class>
 <widget class="QWidget" name="Widget">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>800</width>
    <height>600</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Widget</string>
  </property>
 </widget>
 <resources/>
 <connections/>
</ui>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

批量文本处理:轻松提取与整理大量文本内容

在数字时代&#xff0c;内容创作已成为企业与个人传递信息、展示品牌形象的重要手段。然而&#xff0c;面对海量的文本信息&#xff0c;如何高效地提取关键内容&#xff0c;并将其转化为引人注目的标题和宣传软文&#xff0c;成为了摆在我们面前的一大挑战。 第一步&#xff0…

电脑桌面图标变大了怎么恢复?5种简单方法帮你恢复正常

在使用电脑的过程中&#xff0c;有时候我们可能会遇到桌面图标变得异常大的情况。这种问题不仅影响了桌面的整洁度&#xff0c;也可能会影响我们的操作体验。电脑桌面图标变大了怎么恢复&#xff1f;如果你也遇到了这种情况&#xff0c;不用担心&#xff0c;本文将为你介绍五种…

【C++从0到王者】第五十二站:跳表

文章目录 一、什么是跳表二、skiplist的效率三、skiplist的实现 一、什么是跳表 skiplist本质上也是一种查找结构&#xff0c;用于解决算法中的查找问题&#xff0c;跟平衡搜索树和哈希表的价值是一样的&#xff0c;可以作为key或者key/value的查找模型。 skiplist&#xff0c;…

c++的STL(3)-- deque容器

目录 deque概述 deque的内存模型 注意: 1. deque的默认构造(和vector类似) 代码: 2. deque的有参构造(和vector类似) 代码: 3. deque容器在首部和尾部添加或者元素 代码: 相关知识点: 4. deque容器的元素个数 (和vector类似) 代码: 5. deque在指定位置插入元素(和…

Linux搭建ftp服务

使用yum 进行安装 # 在线安装FTP yum install -y vsftpd 安装完成后查看ftp状态 # 查看ftp状态 systemctl status vsftpd.service # 启动ftp状态 重启&#xff1a;restart&#xff0c;停止&#xff1a;stop&#xff0c;开机自启&#xff1a;enable&#xff0c;关闭开机自启&…

【小黑送书—第十二期】>>一本书讲透Elasticsearch:原理、进阶与工程实践(文末送书)

Elasticsearch 是一种强大的搜索和分析引擎&#xff0c;被广泛用于各种应用中&#xff0c;以其强大的全文搜索能力而著称。 不过&#xff0c;在日常管理 Elasticsearch 时&#xff0c;我们经常需要对索引进行保护&#xff0c;以防止数据被意外修改或删除&#xff0c;特别是在进…

图片二维码能长期扫码展示吗?在线图片快速生码的文字教学

很多人在制作图片二维码的时候&#xff0c;比较关注的问题一个是扫码次数&#xff0c;另一个是二维码有效期&#xff0c;那么满足这两个需求的图片二维码该如何制作呢&#xff1f;想要制作不限制扫码次数并且长期有效的图片二维码&#xff0c;大家可以通过图片二维码生成器的功…

分库分表浅析原理

数据库存放数据大了&#xff0c;查询等操作就会存在瓶颈&#xff0c;怎么办&#xff1f; 1. 如果是单张表数据大了&#xff0c;可以在原有库上新建几张表table_0、table_1、table_2、.....table_n 写程序对数据进行分表&#xff1a; --这里提供一种一种分表策略,这里只需维护…

动态规划-背包问题 分析+代码

这里写自定义目录标题 介绍背包问题过程分析例题题目说明代码输出结果 介绍背包问题 背景&#xff1a;在现实生活中&#xff0c;我们常常会面临需要在有限空间内做出最优选择的情况&#xff0c;比如旅行时需要选择携带哪些物品&#xff0c;或者在资源有限的情况下选择最有利可图…

EASY-LASER激光对中仪维修E710镭射仪联轴器维修

Easy-Laser激光对中仪维修常见故障&#xff1a;触摸屏损坏&#xff08;屏碎&#xff0c;不显示&#xff0c;黑屏&#xff0c;蓝屏&#xff0c;无背光等&#xff09;&#xff0c;对中仪电路板损坏&#xff0c;对中仪接收装置电路板维修&#xff0c;对中仪发射控制装置电路板等均…

CubeMX使用教程(2)——如何点亮LED

在上一章&#xff0c;我们完成了CubeMX的环境配置&#xff0c;这一章我们通过CubeMX来完成点亮LED的工作。 通过LED原理图可知&#xff0c;如果我们要点亮LD1&#xff08;第一个灯&#xff09;&#xff0c;它对应开发板的PC8端口&#xff0c;因此我们应该在CubeMX中将PC8配置为…

OpenCV实战--人脸跟踪(级联分类器)

1、前言 人脸识别是基于人的脸部特征信息进行身份识别的--种生物识别技术,也是计算机视觉重点发展的技术。 机械学习算法诞生之后,计算机可以通过摄像头等输入设备自动分析图像中包含的内容信息,随着技术的不断发展,现在已经有了多种人脸识别的算法。 人脸跟踪是让计算机…

Java 语言“编译与解释并存”

程序语言的执行方式 将高级编程语言按照程序的执行方式分为两种&#xff1a; 编译型&#xff1a;编译型语言open in new window 会通过编译器open in new window将源代码一次性翻译成可被该平台执行的机器码。一般情况下&#xff0c;编译语言的执行速度比较快&#xff0c;开发…

微信jssdk获取定位计算距离

微信网页jssdk开发文档获取地理位置接口文档&#xff1a;https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#36 实现&#xff1a; const wx require(weixin-js-sdk) const jsApiList [ getLocation ]/*** 获取定位* param {*} configData 接口获取*…

云流化技术方案的优势

数字化的时代&#xff0c;许多新兴的技术都逐渐走进人们的视野&#xff0c;云流化作为一种新兴的技术在各个领域发挥着越来越重要的作用&#xff0c;也为我们带来了方便快捷的使用体验&#xff0c;尤其是在虚拟仿真和数字孪生领域&#xff0c;但是有的人可能听到这个词会比较陌…

armv8/armv9不同特权程序之间的跳转模型

目录 1、前言2、4个特权等级/4个安全状态之间的跳转模型3、启动时镜像之间的跳转模型4、runtime程序之间的跳转模型推荐 本文转自 周贺贺&#xff0c;baron&#xff0c;代码改变世界ctw&#xff0c;Arm精选&#xff0c; armv8/armv9&#xff0c;trustzone/tee&#xff0c;secur…

第二证券:金价创出历史新高 黄金主题类基金“熠熠闪光”

2024年3月以来&#xff0c;黄金价格走出了一轮波澜壮阔的行情。上海黄金&#xff08;SHFE黄金&#xff09;接连8日收涨&#xff0c;累计涨幅近6%&#xff0c;3月9日夜盘创出511.66元/克的前史最高价&#xff0c;最新收盘价为509.32元/克&#xff0c;相同是前史新高。 国际金价…

福州景湖佳园120平现代风格装修,简洁有层次。福州中宅装饰,福州装修

在现代风格的装修设计中&#xff0c;配色方案是决定整体氛围的关键因素。以福州景湖佳园的120平米装修案例为例&#xff0c;设计师巧妙地运用了灰、白、蓝三种颜色&#xff0c;打造出了一处既简洁又富有层次感的居住空间。 首先&#xff0c;灰色是现代风格中非常常见的一种色彩…

C++:继承与派生

为什么会有继承这样的语法呢&#xff1f;&#xff1f;试想这样一个场景&#xff1a;假设我们这个App需要去获取不同类型用户的数据&#xff0c;并进行分类&#xff0c;那么就需要我们去写对应不同的类&#xff0c;比如说学生、老师、军人、公司职工…………每个类都需要有名字、…

Python从0到100(三):Python中的变量介绍

前言&#xff1a; 零基础学Python&#xff1a;Python从0到100最新最全教程。 想做这件事情很久了&#xff0c;这次我更新了自己所写过的所有博客&#xff0c;汇集成了Python从0到100&#xff0c;共一百节课&#xff0c;帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…