Qt笔记(十七)cmake编译Qt项目

devtools/2024/9/24 13:07:45/

Qt笔记(十七)cmake编译Qt项目

  • 1. 文件内容与文件结构
    • 1.1.文件目录
    • 1.2. CMakeLists.txt内容
    • 1.3. main.cpp文件
    • 1.4. mouseevent.h
    • 1.5. mouseevent.cpp
    • 1.6. 生成Visual Studio项目后编译报错
    • 1.7. 界面显示中文乱码问题

1. 文件内容与文件结构

1.1.文件目录

文件夹下文件,其中CMakeLists.txt是我新添加的。

MouseEventCMakeLists.txtmain.cppmouseevent.cppmouseevent.h

1.2. CMakeLists.txt内容

cmake_minimum_required(VERSION 3.5)project(mouseEvent 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)find_package(Qt5 COMPONENTS Widgets REQUIRED)include_directories(${PROJECT_SOURCE_DIR}/include${CMAKE_CURRENT_BINARY_DIR}
)# 由于采用set(CMAKE_AUTOUIC ON)的方式处理ui文件,编译时会报错找不到ui文件。
# 需要将ui文件夹加入AUTOUIC的搜索目录,这样AUTOUIC处理时才能找到ui文件。
set(CMAKE_AUTOUIC_SEARCH_PATHS ${CMAKE_SOURCE_DIR}/ui)file(GLOB PRO_SRC ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
file(GLOB PRO_INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/*.h)
file(GLOB PRO_UI ${CMAKE_CURRENT_SOURCE_DIR}/*.ui)
file(GLOB PRO_RESOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.qrc)add_executable(mouseEvent${PRO_SRC}${PRO_INCLUDE}${PRO_UI}${PRO_RESOURCES}
)target_link_libraries(mouseEvent PRIVATE Qt5::Widgets)

1.3. main.cpp文件

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

1.4. mouseevent.h

#ifndef MOUSEEVENT_H
#define MOUSEEVENT_H#include <QMainWindow>
#include <QLabel>
#include <QStatusBar>
#include <QMouseEvent>
class MouseEvent : public QMainWindow
{Q_OBJECTpublic:MouseEvent(QWidget *parent = 0);~MouseEvent();
protected:void mousePressEvent(QMouseEvent *e);void mouseMoveEvent(QMouseEvent *e);void mouseReleaseEvent(QMouseEvent *e);void mouseDoubleClickEvent(QMouseEvent *e);
private:QLabel *statusLabel;QLabel *MousePosLabel;
};#endif // MOUSEEVENT_H

1.5. mouseevent.cpp

#include "mouseevent.h"MouseEvent::MouseEvent(QWidget *parent): QMainWindow(parent)
{setWindowTitle(tr(u8"鼠标事件"));					//设置窗体的标题statusLabel = new QLabel;						//(a)statusLabel->setText(tr(u8"当前位置:"));statusLabel->setFixedWidth(100);MousePosLabel = new QLabel;						//(b)MousePosLabel->setText(tr(""));MousePosLabel->setFixedWidth(100);statusBar()->addPermanentWidget(statusLabel);	//(c)statusBar()->addPermanentWidget(MousePosLabel);this->setMouseTracking(true);					//(d)resize(400,200);
}void MouseEvent::mousePressEvent(QMouseEvent *e)
{QString str="("+QString::number(e->x())+","+QString::number(e->y()) +")";														//(a)if(e->button()==Qt::LeftButton){statusBar()->showMessage(tr(u8"左键:")+str);}else if(e->button()==Qt::RightButton){statusBar()->showMessage(tr(u8"右键:")+str);}else if(e->button()==Qt::MidButton){statusBar()->showMessage(tr(u8"中键:")+str);}
}void MouseEvent::mouseMoveEvent(QMouseEvent *e)
{MousePosLabel->setText("("+QString::number(e->x())+","+QString::number(e->y())+")");
}void MouseEvent::mouseReleaseEvent(QMouseEvent *e)
{QString str="("+QString::number(e->x())+","+QString::number(e->y()) +")";statusBar()->showMessage(tr(u8"释放在:")+str,3000);
}void MouseEvent::mouseDoubleClickEvent(QMouseEvent *e){}MouseEvent::~MouseEvent()
{}

1.6. 生成Visual Studio项目后编译报错

warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss

解决办法:warning C4819 解决方案 warning C4819: The file contains a character that cannot be represented in the cu_warning c4819 the file contains a character that c-CSDN博客

修改编码方式为:打开出现warning的文件,Ctrl+A全选,然后在文件菜单:file->advanced save options (高级保存选项),在弹出的选项中选择新的编码方式为:UNICODE codepage 1200 ,点击确定,问题就解决了。

1.7. 界面显示中文乱码问题

如下,在中文前添加u8。(上面列出的代码是修改后的代码)

statusBar()->showMessage(tr(u8"左键:")+str);

运行结果如下:
在这里插入图片描述


http://www.ppmy.cn/devtools/116512.html

相关文章

面试金典题2.3

若链表中的某个节点&#xff0c;既不是链表头节点&#xff0c;也不是链表尾节点&#xff0c;则称其为该链表的「中间节点」。 假定已知链表的某一个中间节点&#xff0c;请实现一种算法&#xff0c;将该节点从链表中删除。 例如&#xff0c;传入节点 c&#xff08;位于单向链…

如何使用VM中win10搭建Hfish蜜罐(危险感知平台)。从下载到部署详细教程

得而不惜就该死。 -----古月方源 引言&#xff1a;最近跟一个老师做东西&#xff0c;叫我搞清楚蜜罐的搭建和一些底层逻辑&#xff0c;所以记录一下。 一、实验准备 &#xff08;一&#xff09;win10虚拟机 &#xff08;若有需要可以后台私信&#xff09; &#xff08;二&…

JavaScript可视化

JavaScript 提供了多种库和工具来进行数据可视化。以下是一些流行的可视化库及其特点: D3.js特点: 强大的数据驱动文档(Data-Driven Documents)库,允许创建复杂的交互式图表。使用场景: 适合需要高度自定义和复杂交互的可视化。Chart.js特点: 易于使用的图表库,提供了多种…

springboot框架VUE3学院网站系统开发mysql数据库设计java编程计算机网页源码maven项目

博主介绍&#xff1a;专注于Java vue .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设&#xff0c;从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的…

解决银河麒麟桌面操作系统V10SP1 SSH连接“connection reset by ip地址 port 22”问题

解决银河麒麟桌面操作系统V10SP1 SSH连接“connection reset by ip地址 port 22”问题 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 遇到SSH连接银河麒麟V10SP1时“connection reset by ip地址 port 22”的错误&#xff0c;可以尝试以下步…

收据信息提取系统源码分享

收据信息提取检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

vue使用PDF.JS踩的坑--部署到服务器上显示pdf.mjs viewer.mjs找不到资源

之前项目使用的pdf.js 是2.15.349版本&#xff0c;最近换了一个4.6.82的版本&#xff0c;在本地上浏览文件运行的好好的&#xff0c;但是发布到服务器&#xff08;IIS&#xff09;上打不开文件&#xff0c;控制台提示找不到pdf.mjs viewer.mjs。 之前使用的2.15.349pdf和viewer…

conda创建和查询虚拟环境

一、创建Python虚拟环境的命令如下&#xff1a; conda create --name myenv_name python3.10其中myenv_name是你想要创建的虚拟环境的名字&#xff0c;python3.10指定了Python的版本。你可以根据需要更换环境名和Python的版本。 二、激活这个虚拟环境的命令是&#xff1a; c…