QT5:VS创建的QT项目头文件标红和控件对象无法调用

最近使用VS+QT编写代码,除了界面和调试比较舒服以外,感觉的很不习惯, 小问题不断。

问题1

 QT5:VS创建的QT项目头文件标红和控件对象无法调用_第1张图片

解决方法:

1、系统环境变量中添加bin路径;

2、属性配置中添加包含目录和库目录。 

问题2

QT5:VS创建的QT项目头文件标红和控件对象无法调用_第2张图片

上面这个问题,会导致ui调用不了添加的控件对象,搞到怀疑人生。

解决方法:

1、先把ui文件编译一下;

QT5:VS创建的QT项目头文件标红和控件对象无法调用_第3张图片

2、然后编译后的文件移除,注意是移除(文件还在),不是删除(文件没有了),然后再添加回来。

3、如果还是调用不了控件对象(红色波浪线),检查一下QT设计师是否保存。打开UI文件,进入.h文件,找到UI类,按F12,进入ui_xxxx.h,再编译一下ui文件,如果ui_xxxx.h中已经改变,再关掉,就可以了。

QT5:VS创建的QT项目头文件标红和控件对象无法调用_第4张图片

QT5:VS创建的QT项目头文件标红和控件对象无法调用_第5张图片

QT5:VS创建的QT项目头文件标红和控件对象无法调用_第6张图片

问题3

QT5:VS创建的QT项目头文件标红和控件对象无法调用_第7张图片

解决方法:

前面使用成员访问运算符,后面使用指针运算符。习惯没转过来,哈哈。 

QT5:VS创建的QT项目头文件标红和控件对象无法调用_第8张图片

问题4

QT5:VS创建的QT项目头文件标红和控件对象无法调用_第9张图片

同一个解决方法中的项目共用一个属性表,导致属性表不起作用,最明显的问题就是头文件炸了。

 

找不到moc_xxxForm.cppui_xxxForm.h文件

如果添加QT的ui类会涉及到到以下这几个文件:

  • xxxForm.h
  • xxxForm.cpp
  • xxxForm.ui
  • ui_xxxForm.h
  • moc_xxxForm.cpp

编译xxxForm.ui生成ui_xxxForm.h,目的是把UI转换为C++代码,打开一个已生成的ui_xxxForm.h文件,第一行注释:

表单生成自UI文件'GuestForm.ui'

/********************************************************************************
** Form generated from reading UI file 'GuestForm.ui'
**
** Created by: Qt User Interface Compiler version 5.9.6
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

编译xxxForm.h生成moc_xxxForm.cpp文件,打开一个已生成的moc_xxxForm.cpp文件,第一行注释:

元对象代码读取自c++文件'GuestForm.h'

/****************************************************************************
** Meta object code from reading C++ file 'GuestForm.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.9.6)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/

生成工具在QT的bin目录下:

  • uic.exe
  • moc.exe

QT5:VS创建的QT项目头文件标红和控件对象无法调用_第10张图片

QT5:VS创建的QT项目头文件标红和控件对象无法调用_第11张图片

修改对应的命令行和输出,再重新编译ui文件,生成ui_xxxx.h。

命令行:

"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"

"$(QTDIR)\bin\moc.exe" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" "%(FullPath)"

输出:

.\GeneratedFiles\ui_%(Filename).h
.\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp

你可能感兴趣的:(《QT学习笔记》)