相关资料:
https://blog.csdn.net/u014453443/article/details/91975453
问题情况:
the code model could not parse an included file,which might lead to incorrect code completion and highlighting,for example
解决办法:
帮助-->关于插件-->C++-->ClangCodeModel的勾去掉即可
注意,去掉之后一定要重启Qt Creator
问题原因:
CreateMenu.h中定义如下:
1 #ifndef CREATEMENU_H 2 #define CREATEMENU_H 3 4 #include <QMenuBar> 5 #include "mainwindow.h" 6 7 class MainWindow; 8 class Menu : public QMenuBar 9 { 10 Q_OBJECT 11 public: 12 Menu(QWidget *parent,MainWindow *p); 13 ~Menu(); 14 } 15 16 #endif
mainwindow.h中定义如下:
1 #ifndef MAINWINDOW_H 2 #define MAINWINDOW_H 3 4 #include <QMainWindow> 5 #include "CreateMenu.h" 6 7 namespace Ui{ 8 class MainWindow; 9 } 10 11 class Menu; 12 13 class MainWindow : public QMainWindow 14 { 15 Q_OBJECT 16 public: 17 explicit MainWindow(QWidget *parent = nullptr); 18 ~MainWindow(); 19 private: 20 Menu i_MenuBar; 21 } 22 23 #endif
报这个错误的原因是因为重复包含头文件的原因,CreateMenu.h中包含了mainwindow.h头文件,但mainwindow.h头文件又包含了CreateMenu.h,所以才会导致这种报错的发生,按照上面的解决方案可以完美解决!
一定要注意在CreateMenu.h中使用MainWindow类时,在头文件开始一定要写上class MainWindow,这是对MainWindow类的声明,否则在使用MainWindow时会报错;同样在mainwindow.h头文件中使用Menu类时,在头文件开始一定要写上class Menu,这是对Menu类的声明,否则在使用Menu时会报错;