qt中cmake自动处理ui文件的前提

这篇具有很好参考价值的文章主要介绍了qt中cmake自动处理ui文件的前提。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

说明:个人理解,未必正确

参考了下面的网址
http://cn.voidcc.com/question/p-wpcanvtj-tn.html
http://cn.voidcc.com/question/p-wpcanvtj-tn.html

cmake中将set(CMAKE_AUTOUIC ON)打开

set(CMAKE_AUTOUIC ON)  # 自动处理ui文件, 自动处理ui文件是有前提的, 必须在需要编译的头文件(add_executable)中的某个头文件中包含ui_xxx.h(比如#include "ui_model002.h")
set(CMAKE_AUTOMOC ON)  # 自动调用moc(元对象编译器)
set(CMAKE_AUTORCC ON)  # 自动处理资源

头文件添加到add_executable中

 add_executable(qt_test_001
#          main.cpp
#          mainwindow.cpp
#          mainwindow.h
#          mainwindow.ui
#          model002.ui
#          models/model001.ui
#          models/model001.cpp models/model001.h

          ${SRC_LIST}
          )

头文件中包含ui_xxx.h, xxx是ui文件的名字, 比如ui_model001.h

//
// Created by mayn on 2023-08-08.
//

#ifndef QT_TEST_001_MODEL001_H
#define QT_TEST_001_MODEL001_H

#include "ui_model001.h"  //只有包含了这个, cmake中的CMAKE_AUTOUIC才会生效。且这一行不要放在第一行, 好像是cmake的bug

class model001 {

};


#endif //QT_TEST_001_MODEL001_H

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GUDEGbZx-1691477530154)(/api/file/getImage?fileId=64d1e2ce2a7f2605f9000610)]文章来源地址https://www.toymoban.com/news/detail-756220.html

完整的cmake文件

cmake_minimum_required(VERSION 3.5)

project(qt_test_001 LANGUAGES CXX)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_AUTOUIC ON)  # 自动处理ui文件, 自动处理ui文件是有前提的, 必须在需要编译的头文件(add_executable)中的某个头文件中包含ui_xxx.h(比如#include "ui_model002.h")
set(CMAKE_AUTOMOC ON)  # 自动调用moc(元对象编译器)
set(CMAKE_AUTORCC ON)  # 自动处理资源

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

#;-list of directories specifying installation prefixes to be searched by the find_package(),
# find_program(), find_library(), find_file(), and find_path() commands.
#Each command will add appropriate subdirectories (like bin, lib, or include) as specified
# in its own documentation
# By default this is empty. It is intended to be set by the project.
set(CMAKE_PREFIX_PATH "D:/qt/anzhuang/5.14.2/msvc2017")

# 设置MSVC编译编码
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")


# 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)

# 查找当前目录下的所有源文件,放到SRC_LIST变量中
#AUX_SOURCE_DIRECTORY(. SRC_LIST)
# 查找当前目录下的所有源文件,放到SRC_LIST变量中
# 如果我们不但在当前目录需要引入,还需要在当前目录子目录引入了,这里就直接使用GLOB_RECURSE(递归)
#FILE(GLOB SRC_LIST . *.cpp *.ui)
file(GLOB SRC_LIST ${PROJECT_SOURCE_DIR}/*.cpp
        ${PROJECT_SOURCE_DIR}/*.h
#        ${PROJECT_SOURCE_DIR}/*.ui  # 这里面不要包含ui文件
        ${PROJECT_SOURCE_DIR}/models/*.cpp
        ${PROJECT_SOURCE_DIR}/models/*.h
#        ${PROJECT_SOURCE_DIR}/models/*.ui  # 这里面不要包含ui文件
        )
FOREACH(F ${SRC_LIST})
  MESSAGE(STATUS ${F})
ENDFOREACH(F)

if(ANDROID)
  add_library(qt_test_001 SHARED
    main.cpp
    mainwindow.cpp
    mainwindow.h
    mainwindow.ui
  )
else()
  add_executable(qt_test_001
#          main.cpp
#          mainwindow.cpp
#          mainwindow.h
#          mainwindow.ui
#          model002.ui
#          models/model001.ui
#          models/model001.cpp models/model001.h

          ${SRC_LIST}
          )
endif()

target_link_libraries(qt_test_001 PRIVATE Qt5::Widgets)

到了这里,关于qt中cmake自动处理ui文件的前提的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • windows系统cmake生成c++动态库无lib文件解决方法 && bat文件批处理cmd命令

    作为cmake初学者,在windows系统下使用cmake生成c++动态库时出现了下图所示问题,是关于lib文件的。找了一圈,也没发现生成有lib文件。 在google上查,才发现windows系统下动态库生成lib文件,还需要添加以下命令: 生成动态库Demo(链接在此) 文件目录架构: ——源文件目录 —

    2023年04月25日
    浏览(31)
  • Qt 修改自动生成的 ui类名的方法和步骤

    abcwidget.cpp:29:12: error: allocation of incomplete type \\\'Ui::AbcWidget\\\' abcwidget.h:17:7: note: forward declaration of \\\'Ui::AbcWidget\\\' Refactor---rename----法, 以及手动修改法; 需要用到内置编辑器,以及外部编辑器。 在修改 ui文件时,需要使用外部编辑器,才能修改。内部编辑器无效? 1. 修改命名空间

    2024年02月06日
    浏览(95)
  • Qt - .ui 文件的使用

    子目录只能输入英文,想要显示中文,可以修改右下方表中的 text 属性: 让工具栏共用 菜单栏的 new 和 open,只需将下方列表的控件,拖拽到工具栏。 添加分隔符 allowedAreas 设置允许停靠的位置。 可以通过 MainWindow.cpp 的 ui 属性,找到所有的控件。 添加 icon 资源 会创建 .qr

    2024年02月16日
    浏览(33)
  • Visual Studio 与QT ui文件

    对.ui文件鼠标右键,然后单击 Open with… 在弹出的窗口中,选中左侧的 Qt Designer,然后单击右侧的 Add 按钮,随后会弹出一个窗口,在 Program: 输入框中输入 Qt Designer 的路径,最后单击 OK 找到 Qt Designer,然后单击右侧的 Set as Default 解决通过 Visual Studio 打不开 ui 文件的问题

    2024年02月13日
    浏览(30)
  • VS打开Qt Designer(UI文件.ui)失败的解决方法

    VS打开Qt Designer失败的根本原因:VS中默认的Qt Designer路径是错误的。所以要正常使用需要重新设置 1、设置VS中打开Designer的路径 添加成功后,将其设置为默认值

    2024年04月11日
    浏览(34)
  • Pyside6(3): 自动生成UI的Qt参数输入对话框

    参数输入界面是桌面软件开发最繁琐的部分之一。特别是当系统中存在多种可编辑的数值模型时,由于各个模型的字段不同,每个字段的输入类型也不同,需要制作不同的UI,使用不同的UI控件,无疑会耗费大量时间,同时拓展性也非常差,因为每增加一个数值模型,都需要制

    2024年02月03日
    浏览(45)
  • VS中Qt项目不能打开ui文件

    在VS中创建的Qt项目,若不能打开ui文件,或者弹出以下提示的:其本质是找不到designer.exe的路径 那么需要手动添加designer.exe的路径 第一步:右键点击打不开的ui文件,选择打开方式 第二步:点击添加 第三步:点击右侧浏览查找对应的Qt编译器安装路径的designer,然后点击确定

    2024年02月13日
    浏览(33)
  • qt中使用 ui 文件进行界面设计

    目录 1、创建 Qt 应用 ​2、项目创建成功 3、直接点击打开 mainwindow.ui 文件 4、随便从左边侧边栏拖拽一个空间到 界面设计区域 5、在右侧边栏右键点击 pushButton 控件,点击转到槽 6、根据实际需要选择对应的信号,我这里方便演示选择 clicked()信号,直接点击 OK 7、自动在

    2024年02月04日
    浏览(29)
  • Qt Designer生成ui文件,如何转py文件,如何运行

    下面将逐步介绍ui文件如何转py文件,怎么运行的具体操作步骤 ui文件转py文件 1.使用Qt Designer生成ui文件,保存到本地 2.输入 cmd ,打开命令行窗口 3.进入ui文件的目录下,文件路径使用你本地存放ui文件的位置 4.在命令行中输入 pyuic5 -o py文件名 ui文件名 5.查看ui文件所在的位置

    2024年02月04日
    浏览(36)
  • 【Qt】如何在Qt应用程序中使用设计好的UI文件

    本质上,Qt Designer的ui文件是一个以XML格式书写的文件,文件中内容描述了一个界面的widget关系树。这个文件在以下两种情况下会使用到: (1)在编译的时候,这意味着ui文件将被转换为可编译的c++代码,这个过程由 uic 完成。 (2)在应用程序运行的时候,ui文件将由 QUiLoa

    2024年01月16日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包