0. 背景

最近在学习QtCreator(版本:4.8.1;编译器:MSVC 2017 64-bit),遇到了一些问题,特记录如下。(

1. 引用库

QtCreator可以直接包含Windows.h,但是没有默认引用User32.lib,所以需要在设置里面引用,步骤如下:

右键点击左边栏的项目名称,点添加库,之后跳出一个选择框。如果是像上面说的这种能够直接包含头文件的就选系统库,而对于网上下载下来的包括头文件和静态库文件的就选外部库。之后按说明填就行了。注意添加完之后,需要在程序中添加一行#pragma comment(lib,"User32.lib")才行。

2. 编码

QtCreator在编辑文件时通常用的是utf-8,然而msvc编译器认的是系统的编码,一般是gtk,所以会导致编译之后含有中文的字符串在命令行会变成“锟斤铐”,在窗口中则乱码。为此我们需要强制使编译器按utf-8编译,可在程序中添加一行#pragma execution_character_set("utf-8")

3. 命令行输出

通常qmake编译出来的程序一般是不带命令行的,我们可以在.pro文件中加入一行CONFIG += console改变这个设置,然后就可以用io函数了,IDE可以在底部“3 应用程序输出”处看到命令行输出的内容。注意:当在.pro文件中加入这句话后,以后如果想编译出不带命令行的程序,不仅需要删去这句话,还要额外加入CONFIG += console才行。

4. 资源文件

把程序中用到的图片等文件打包进程序的步骤如下:

在左边栏新建.qrc文件,然后添加前缀,注意这个前缀和资源的路径没有关系,它仅仅是为了增加可读性,因此是可以任取的。添加完前缀后添加资源文件。此时.pro文件中应该多出一句RESOURSES += XX.qrc。最后在程序中引用时,直接在路径字符串里写:前缀资源文件名即可。如前缀是/,资源是icon文件夹里的mouse.ico,那么字符串写:/mouse.ico

5. 程序图标

给程序设定图标步骤如下:

在左边栏新建一个空文件命名为icon.rc,然后在里面添加IDI_ICON1 ICON DISCARDABLE "mouse.ico"mouse.ico是你要的图标文件名,之后在.pro文件里添加一行RC_FILE += icon.rc,然后用release选项编译就能看到了。

6. 打包程序

编译出来的程序不能直接运行,需要处理依赖。Qt已经为我们提供了这个工具,只需在开始菜单中启动“Qt 5.12.1 (MSVC 2017 64-bit)”,然后cd到程序所在目录,之后输入命令windeployqt 程序名,它就会将程序的依赖复制到当前文件夹,然后尝试一下哪些是不需要的删除即可。

使用QtCreator遇到的一些问题的更多相关文章

  1. Ubuntu16.04 VTK7.1.0+QT4.8.6+QtCreator开发环境配置

    VTK需要OpenGL3.0或更高版本的驱动,但虚拟机下的Ubuntu不支持OpenGL3.0,或者自己按网上教程配置之后也能支持,但过程相当繁琐,本人试验失败. 最终决心采用双系统,装好之后,执行g ...

  2. ubuntu qtcreator 硬件权限问题

    在使用 qtcreator 在 ubuntu(debian.mint 等类同)下做开发时,常用到权限问题,无法直接操作硬件,比如串口等. 办法之一是使用 root 打开 creator,进而进行其他操 ...

  3. [Qt5] Develop openCV3 by QML on Qt-creator

    QML的酷炫控件,适合移动设备开发. qt-creator的跨平台是QML与opencv的粘合剂. 关键: QImage有若干种格式,转化为相应的Mat. Mat处理完后,还要正确得还原为原来格式的Q ...

  4. Terminal中输入命令直接打开QtCreator,以及创建其桌面快捷方式

    工业项目设计学习第一步,熟悉开发工具 Qt学习论坛,东西多,但也杂 emouse的博客,以前学习STM32开发环境搭建时也是参考这位博主的 更多详细的步骤在上面都能找到,今天先不写,等明天把硬件设备全 ...

  5. 解决 QtCreator 3.5(4.0)无法输入中文的问题

    解决 QtCreator 3.5.1无法输入中文的问题 [TOC] 环境是ubuntu 15.10 ubuntu软件源中下载安装的fctix-libs-qt5现在没有用,版本太旧了. 自己下载fcti ...

  6. linux下QtCreator无法输入中文的情况

    解决linux下QtCreator无法输入中文的情况 本文由乌合之众 lym瞎编,欢迎转载 blog.cnblogs.net/oloroso 本文由乌合之众 lym瞎编,欢迎转载 my.oschina ...

  7. QtCreator动态编译jsoncpp完美支持x86和arm平台

    如果是做嵌入式开发. 在Qt下支持JSon最好的办法,可能不是采用qjson这个库.QJson这个库的实例只提供了x86环境下的编译方法. Installing QJson-------------- ...

  8. VS2010 win7 QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序

    下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.0.zip, 不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0 ...

  9. 解决ubuntu14.04下Qt 5.3.1下的QtCreator fcitx,ibus不能输入中文

    http://my.oschina.net/u/219482/blog/341452 感谢作者 ubuntu 14.04从Qt官网下载的最新版qt,安装过程很顺利,但却发现没办法输入中文(我用的是 f ...

  10. Linux QtCreator设置mingw编译器生成windows程序

    Qt跨平台,那必须在Linux平台编译一个可以在windows下运行的Qt程序才行,当然还得和QtCreator环境弄在一起才行. 工作环境:Centos 7 yum install qt5-qt* ...

随机推荐

  1. numpy中的max和maximum

    numpy科学计算包中有两个函数np.max()和np.maximum(),他们的功能截然不同.简单而言即前者作用于ndarray对象,求的是它自身的最大.而后者是一个数学上的取$\max$的效果,它 ...

  2. cb37a-_c++_STL_算法_复制元素copy_copy_backward

    cb37a-_c++_STL_算法_复制元素copy_copy_backward copy(),同一个容器内部区间的拷贝,或者容器与容器之间的拷贝copy_backward()//向后copy 注意: ...

  3. Eplan如何添加“连接定义点”

    Eplan如何添加“连接定义点” 参考文档:https://blog.csdn.net/txwtech/article/details/90510106

  4. mybatis-config.xml核心文件配置

    一.全局配置文件结构 configuration 配置 properties 属性:可以加载properties配置文件的信息 settings 设置:可以设置mybatis的全局属性 typeAli ...

  5. 总结下c/c++的一些调试经验

    工作2年,干了一年ARM平台嵌入式,一年后台,总结下这两年开发中调试的经验.我把调试手段分成2种:打印日志和用工具分析.因为平时主要开发在Linux平台,就以GDB为例 一.打印日志 1. 合理设置日 ...

  6. Day10-微信小程序实战-交友小程序-自定义callPhone 和copyText组件

    ---为了方便用户可以拨打电话和复制微信号(下面就要实现这样的两个功能) 注意:在小程序中是没办法直接的添加用户的微信的,所以就只能是复制微信号 (这种东西的话可以直接去做,也可以做成组件,做出组件的 ...

  7. 7000 字说清楚 HashMap,面试点都在里面了

    我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农! 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在 ...

  8. Spring Boot 2.x基础教程:Spring Data JPA的多数据源配置

    上一篇我们介绍了在使用JdbcTemplate来做数据访问时候的多数据源配置实现.接下来我们继续学习如何在使用Spring Data JPA的时候,完成多数据源的配置和使用. 添加多数据源的配置 先在 ...

  9. 尚学堂 217 java中的字节码操作2

    package com.bjsxt.test; @Author(name="gaoqi", year=2014) public class Emp { private int em ...

  10. bugku 一个神奇的登录框

    一个登录界面,填个admin,123试试,提示try again 抓包看看. 在admin后加个’提示try again 看来是被过滤了,试试” 报错了,加上# 报错没有了,说明存在注入点. 先来判断 ...