QT5及qt-vs-addin-1.2.0之VS2012配置小结

可喜可贺,Digia在末日第二天发布了QT5,同时面世的还有qt-vs-addin-1.2.0,让我们看看有哪些新玩意儿:

  • Project creation wizards updated to follow Qt 5 module structure
  • Project settings form updated to follow Qt 5 module structure
  • Help documents updated to Qt 5.0
  • Support for Visual Studio 2012, 2010 and 2008
  • Parameter passing to lupdate fixed (QTVSADDINBUG-131)
    没错,1.2.0终于支持VS2012了!

下载安装一路顺利,意料之中情理之外,问题接踵而至,按先后顺序罗列如下,希望对遇到相同问题的程序猿有所帮助。

当新建一个QT5 Application,并按下F5后,第一颗地雷引爆了:

Error 1 error LNK2038: mismatch detected for ‘_MSC_VER’: value ‘1600’ doesn’t match value ‘1700’ in cell.obj D:\Projects\QT\qt5\qt5\qtmaind.lib(qtmain_win.obj) qt5
错误原因很明显,坑爹的QT发布的包是for VS2010的,纵然qt-vs-addin支持了VS2012,也不能直接编译。好在类似的问题早在两三个月前给老师做的一个MFC上就遇见过,在装有VS2010 的情况下,打开项目属性,将Platform Toolset从V110修改为V100,使用VS2010的平台工具集来编译【必须安装VS2010】,问题即可解决。如图。

设置平台工具集为V100

测试程序终于编译通过,但是更蛋痛的问题接踵而至,困扰了俺整整一天,其间修复重装了VS2010和VS2012,任然没能解决。

修改为V100后,初始生成的程序能编译通过,但是俺震精地发现不能往项目里添加文件了,alert如下:

The item type ‘None’ is not supported by this project item provider. Parameter name: itemType
再次打开项目属性,居然只剩下可怜两项,没办法再设置回V110了!

哎尼玛,这不科学!

其中各种google资料就不说了,反正是没同样命运的二货遇上相同问题。

纠结了一天之后,终于在某个惊天动地的时刻,俺灵感顿现,想到俺的VS2010是中文的,而VS2012是英文的,会不是是这个原因导致VS2012上不能正常使用VS2010 的平台工具集呢,,马上测试,居然还真是这样,坑爹啊!

立马把VS2012改回中文,看起来终于正常了。

结果把前几天用QT4写到一半的一个程序搬过来,一编译,一大堆错误,各种GUI库里的widget类没定义,可是我明明有写#include <QtGui>

打开QtGui文件一看,果然,以往包含在里面的

class QCheckBox;

class QLabel;

class QLineEdit;

class QPushButton;
等等玩意儿全不见了,Google一下:
One of the major internal infrastructural changes in Qt 5 compared to Qt 4 is the splitting of widgets from the QtGui module into a new QtWidgets module.
原来,QT5把这些类全部从QtGui搬到了QtWidgets。

悉数修改,终于编译通过,QT5及qt-vs-addin-1.2.0之VS2012配置算是圆满收工,剩下的就是在VS2012上享受QT5了。

VS2012&QT5