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
- 清理项目:在Qt Creator中选择“构建”菜单下的“清理项目”。
- 构建项目
用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程序打包
- 先用qc运行,release模式运行一下
- 进入构建的release文件夹,找到可执行程序,复制到你要打包的文件夹里


- 在打包文件夹的地址栏输入cmd,按enter键进入cmd窗口

- 在cmd窗口输入windeployqt按空格键,然后按tab键,自动输入可执行文件名,按enter执行打包

- 环境变量配置
-
Cannot find Visual Studio installation directory,VCINSTALLDIR is not set,原因是系统缺少VCINSTALLDIR这个环境变量
手动设置一下环境变量,自己百度查询一下方法 -
windepolyqt的环境变量就是Qt安装包里设置,如果用的是mingw,就把mingw版本下的bin设置到环境变量,如果是msvc,就设置msvc的
-
- 这个打包出来的程序会缺少3个库
libwinpthread-1.dll
libstdc++ -6.dll
libgcc_s_dw2-1.dll
在相应的mingw版本的bin目录下能找到
- 打开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就能打包
2279

被折叠的 条评论
为什么被折叠?



