先上代码:
/*game_window.h 文件*/
#include <qwidget.h>
class game_window:public QWidget
{
Q_OBJECT
public:
game_window(QWidget *parent, const char *name );
void paintEvent(QPaintEvent*event);
};
/*game_window.cpp 文件*/
#include <qpainter.h>
#include "game_window.h"
game_window::game_window(QWidget *parent, const char *name ):QWidget(parent,name)//构造函数
{
setMinimumSize(720,600);
setMaximumSize(720,600);
setWindowTitle("Deveil's Tower");
}
void game_window::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
QPixmap pixmap_map=("./Resources/map.png");
painter.drawPixmap(0,0,this->width(),this->height(),pixmap_map);
}
------最佳解决方案--------------------
我怀疑是重复包含问题
头文件加
#ifndef GAME_WINDOW_H
#define GAME_WINDOW_H
末尾加
#endif
------其他解决方案--------------------
错误信息如下:
main.obj : error LNK2005: "public: __thiscall game_window::game_window(class QWidget *,char const *)" (??0game_window@@QAE@PAVQWidget@@PBD@Z) already defined in game_window.obj
1>main.obj : error LNK2005: "public: virtual void __thiscall game_window::paintEvent(class QPaintEvent *)" (?paintEvent@game_window@@UAEXPAVQPaintEvent@@@Z) already defined in game_window.obj
------其他解决方案--------------------
如果把 Cpp文件中的函数直接放到相应的头文件中,完全通过。
可是老师说最好的变成习惯是在头文件中定义,在cpp文件中的完善具体的函数
求大侠之点~
------其他解决方案--------------------
看代码像是Qt3?
------其他解决方案--------------------
这个不重要,关键是怎么解决这样的问题,求大侠帮忙~
------其他解决方案--------------------
加了以后错误依旧
------其他解决方案--------------------
解决了,
主函数包含文件应该是头文件,而不是cpp文件
分享了
------其他解决方案--------------------
game_window::game_window(QWidget *parent, const char *name ):QWidget(parent,name)
我这边怎么便也不过,QWidget的构造函数不是
QWidget ( QWidget * parent = 0, Qt::WindowFlags f = 0 )
这个吗?