Qt私人笔记

Qt私人笔记

环境配置

Qt Creator

换源安装 进入安装包文件夹,地址栏输入cmd

输入指令【安装包可执行程序】 --mirror https://mirrors.ustc.edu.cn/qtproject

wsl安装QT教程

wsl安装QT教程
也可以换源安装

设置代码自动补全

步骤1. 打开Qt Creator
步骤2. 在菜单栏上面选择工具(Tools),在下拉菜单中选择Options…
步骤3. 找到环境,点击键盘
步骤4. 在键盘快捷键的过滤器中键入:completethis
步骤5. 注意到代码自动补全命令(CompleteThis)的快捷键是Ctrl+空格。可以改成其他快捷键

常用快捷键

快捷键说明
Ctrl+Insert选中并复制当前行
Ctrl+Alt+↓将当前行向下复制
Ctrl+Enter在当前行之后插入行
Shift+F2声明和定义之间切换
Ctrl+/注释,取消注释选中的代码
Esc切换到代码编辑状态
Ctrl + I格式化选中代码
Ctrl + Shift + R局部变量统一修改
Home移动到行首
End移动到行尾

调试时打开终端显示

点击工具->外部->配置->构建和运行
在这里插入图片描述

错误解决

LNK1168

在这里插入图片描述
之前有程序在运行中,没关掉,把之前运行的程序关掉

Error: dependent’

在.pro里添加QMAKE_PROJECT_DEPTH =0
在这里插入图片描述

ui界面更改,但是重新构建不提示新ui

  1. 清理项目:在Qt Creator中选择“构建”菜单下的“清理项目”。
  2. 构建项目

用eventFilter实现无边框窗口拖拽无反应

看看有没有给窗口设置installEventFilter(this);

进行控件提升找不到类的头文件,但是类明明存在

在cmakelist里设置包含当前目录 set(CMAKE_INCLUDE_CURRENT_DIR ON)
在这里插入图片描述

QT项目linux打包后提示找不到 shared libraries

用cmake执行release后再打包
CMakeList添加如下

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -no-pie")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -no-pie")

Qt windows程序打包

  1. 先用qc运行,release模式运行一下
  2. 进入构建的release文件夹,找到可执行程序,复制到你要打包的文件夹里
    在这里插入图片描述
    在这里插入图片描述
  3. 在打包文件夹的地址栏输入cmd,按enter键进入cmd窗口
    在这里插入图片描述
  4. 在cmd窗口输入windeployqt按空格键,然后按tab键,自动输入可执行文件名,按enter执行打包
    在这里插入图片描述
  • 环境变量配置
    • Cannot find Visual Studio installation directory,VCINSTALLDIR is not set,原因是系统缺少VCINSTALLDIR这个环境变量
      手动设置一下环境变量,自己百度查询一下方法

    • windepolyqt的环境变量就是Qt安装包里设置,如果用的是mingw,就把mingw版本下的bin设置到环境变量,如果是msvc,就设置msvc的

  1. 这个打包出来的程序会缺少3个库
libwinpthread-1.dll
libstdc++ -6.dll
libgcc_s_dw2-1.dll

在相应的mingw版本的bin目录下能找到

  1. 打开Enigma VirtualBox
    点浏览定位到你的exe
    点击增加选增加递归,输入当前程序的文件夹
    点击文件选项,选压缩
    在这里插入图片描述

点执行封包,在当前文件夹会生成一个文件名中有box的.exe

cpack打包

如果是QT5在CmakeList添加如下

include(GNUInstallDirs)
install(PROGRAMS
    $<TARGET_FILE:XXX>
    TYPE BIN) # 安装可执行文件

# CPack配置
get_target_property(_qmake_executable Qt5::qmake IMPORTED_LOCATION) # 获取qmake工具路径
get_filename_component(_qt_bin_dir "${_qmake_executable}" DIRECTORY) # 获取Qt安装目录

set(CPACK_PACKAGE_NAME ${PROJECT_NAME}) # 设置安装包名称
set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION}) # 设置安装包名称和版本
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A simple C++ application using Qt5") # 设置安装包描述

if(CMAKE_SYSTEM_NAME MATCHES "Windows")
    set(CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME}") # 设置安装目录
    set(CPACK_NSIS_DISPLAY_NAME ${CMAKE_PACKAGE_NAME}) # 设置安装程序显示名称
    set(CPACK_NSIS_COMPRESSOR lzma) # 设置压缩算法
    set(CPACK_NSIS_INSTALLED_ICON_NAME XXX.exe) # 设置安装图标
    set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION .) # 设置系统运行时库的安装目录
    set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE) # 安装UCRT库
    set(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut '$DESKTOP\\\\XXX.lnk' '$INSTDIR\\\\XXX.exe'") # 设置桌面快捷方式
    include(InstallRequiredSystemLibraries) # 添加系统库
    find_program(WINDEPLOYQT_EXECUTABLE windeployqt HINTS "${_qt_bin_dir}") # 查找windeployqt工具
    file(GLOB EXTRA_DLLS ${_qt_bin_dir}/libgcc_s_seh-1.dll
        ${_qt_bin_dir}/libstdc++-6.dll
        ${_qt_bin_dir}/libwinpthread-1.dll)

    add_custom_command(TARGET XXX POST_BUILD
        COMMAND "${CMAKE_COMMAND}" -E remove_directory "${CMAKE_CURRENT_BINARY_DIR}/qtDeploy/"
        COMMAND "${CMAKE_COMMAND}" -E
        env PATH="${_qt_bin_dir}" "${WINDEPLOYQT_EXECUTABLE}"
        --verbose 0
        --no-compiler-runtime
        --no-angle
        --no-webkit2
        --no-quick-import
        --no-translations
        --dir "${CMAKE_CURRENT_BINARY_DIR}/qtDeploy/" $<TARGET_FILE:XXX>
        COMMAND "${CMAKE_COMMAND}" -E copy $<TARGET_FILE:XXX> "${CMAKE_CURRENT_BINARY_DIR}/qtDeploy/" # 把可执行文件复制到qtDeploy目录
        COMMAND "${CMAKE_COMMAND}" -E copy ${EXTRA_DLLS} "${CMAKE_CURRENT_BINARY_DIR}/qtDeploy/" # 复制Qt依赖库到qtDeploy目录
        COMMENT "Deploying Qt..."
    ) # 部署Qt资源文件

    install(
        DIRECTORY "${CMAKE_BINARY_DIR}/qtDeploy/"
        DESTINATION .
    ) # 安装Qt资源文件

    set(CPACK_GENERATOR "NSIS") # 设置安装包生成器
endif()

include(CPack)

把XXX改成自己的可执行文件名
release后在有qtDeloy文件夹的那里,打开命令行输入cpack就能打包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yerennuo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值