• 5790阅读
  • 4回复

[提问]MainWindow出错 [复制链接]

上一主题 下一主题
离线xyfn
 

只看楼主 倒序阅读 楼主  发表于: 2014-12-15
— 本帖被 XChinux 从 其它技术开发讨论区 移动到本区(2015-07-28) —
请教各位大牛我的程序为什么会出现这个错误
F:\Qt\xiangmu\untitled1\insertdialog.h:43: error: 'MainWindow' does not name a type
       MainWindow *w4;?
       ^
我发现我都有包含mainwindow.h的头文件
我的代码有两个文件一个是自定义对话框文件instertdialog,一个就是mainwindow文件,我要实现的是mainwindow调用instertdialog的对话框,
然后instertdialog又得向mainwindow写入数据,因为instertdialog对话框实现的是数据插入功能,instertdialog和mainwindow两个头文件都必须包含啊?
两个文件不包含谁这些功能就不能实现,为什么它会偏偏告诉我 'MainWindow' does not name a type???
                                                                    请大牛指教!

离线kimtaikee

只看该作者 1楼 发表于: 2014-12-15
你这是循环包含造成的问题。
你在InsertDialog文件中声明一下MainWindow就行了,在InsertDialog的cpp文件中在包含mainwindow.h
  1. class MainWindow;
  2. class InsertDialog : public QDialog
  3. {
  4. XXX
  5. MainWindow* m_mainWindow;
  6. };

离线realfan

只看该作者 2楼 发表于: 2014-12-15
可以在头文件中只做声明,就不必包含另一个文件的头文件了
比如在
instertdialog.h中
class MainWindow;
....
MainWindow * pMainWindow;
...
在cpp文件中,再直接#include 需要的头文件
离线xyfn

只看该作者 3楼 发表于: 2014-12-15
回 kimtaikee 的帖子
kimtaikee:你这是循环包含造成的问题。
你在InsertDialog文件中声明一下MainWindow就行了,在InsertDialog的cpp文件中在包含mainwindow.h
class MainWindow;
class InsertDialog : public QDialog
....... (2014-12-15 10:23) 

还是不行? 我按你要求去弄, 然后在insertDialog中调用mainwindow的函数,它提示没有匹配的函数?
离线kimtaikee

只看该作者 4楼 发表于: 2014-12-15
你不能在头文件中调用MainWindow的函数,你得在cpp中调用,然后在insertdialog.cpp 中包含mainwindow.h 这是最基本的知识.

快速回复
限100 字节
 
上一个 下一个