QT中类的定义和声明是不是不能放在一个头文件中?

facat 2011-03-17 06:18:33
例如有如下代码:
#ifndef INHERIT_H
#define INHERIT_H
#include "ui_mainwindow.h"
#include <QMessageBox>
class Inherit;

class Inherit:public QMainWindow,public Ui::MainWindow
{
Q_OBJECT
public :
Inherit(QMainWindow *parent=0);
~Inherit();
private slots:
//void msg();

};


Inherit::Inherit(QMainWindow *parent)
{}


Inherit::~Inherit()
{}




#endif // INHERIT_H

编译器提示 multiple definition of xxxx
是不编译器不支持这两部分放在一个文件中啊?
...全文
514 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
老邓 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 facat 的回复:]

引用 1 楼 loaden 的回复:

凡是有Q_OBJECT的类,最终会生成ui_*.h
所以应该分开放置。
定义总是放在头文件,而实现都放在源文件中。

遇到模板类怎么版?模板类是不支持分离编译的。
[/Quote]
带Q_OBJECT的都是界面相关类。
不需要模板:没必要把简单问题复杂化。
Qt的消息机制已经足够灵活了。
facat 2011-03-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 loaden 的回复:]

凡是有Q_OBJECT的类,最终会生成ui_*.h
所以应该分开放置。
定义总是放在头文件,而实现都放在源文件中。
[/Quote]
遇到模板类怎么版?模板类是不支持分离编译的。
老邓 2011-03-17
  • 打赏
  • 举报
回复
凡是有Q_OBJECT的类,最终会生成ui_*.h
所以应该分开放置。
定义总是放在头文件,而实现都放在源文件中。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧