• 4787阅读
  • 2回复

QMainWindow派生类的构造函数问题—已解决 [复制链接]

上一主题 下一主题
离线halty86
 
只看楼主 倒序阅读 楼主  发表于: 2009-08-01
小弟刚开始学习Qt编程,试着写了一个小的QUI程序,编译总是错误,各位帮忙解释一下:(下附源码,编译环境windows xp)

头文件:MainWindow.h

#ifndef _MAINWINDOW_H_
#define _MAINWINDOW_H_

#include <QMainWindow>
class QMenu;
class QTextEdit;
class MainWindow : public QMainWindow
{
 Q_OBJECT
public:
 MainWindow(QWidget* parent = 0);
private:
 QMenu* menuCall;
 QTextEdit* text;
 void iniMenu();
 void iniCentralWidget();
}
#endif


源文件:MainWindow.cpp

#include <QtGui>
#include "MainWindow.h"
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
 iniMenu();
 iniCentralWidget();
 setWindowTitle(QString::fromLocal8Bit("视频通话"));
}
void MainWindow::iniMenu()
{
 menuCall = new QMenu(QString::fromLocal8Bit("通话(&C)"), this);
 QMenuBar* bar = menuBar();
 bar->addMenu(menuCall);
}
void MainWindow::iniCentralWidget()
{
 text = new QTextEdit(this);
 setCentralWidget(text);
}


主函数:

#include <QApplication>
#include "MainWindow.h"
int main(int argc, char** argv)
{
 QApplication app(argc, argv);
 MainWindow mainWin;
 mainWin.show();
 return app.exec();
}

编译时错误提示:D:\Qt\Qapps\mainwindow\MainWindow.cpp(4) : error C2533: 'MainWindow::MainWindow' : constructors not allowed a return type
我总找不出来原因,请教各位!
[ 此帖被halty86在2009-08-04 16:58重新编辑 ]
离线dbzhang800

只看该作者 1楼 发表于: 2009-08-01
error C2533: 'MainWindow::MainWindow' : constructors not allowed a return type


错误消息很好理解,构造不允许有返回值。
编译器的意思就是你代码中的构造函数有返回值

看看写的代码,没有返回值啊,真的没有?

我们知道返回值在函数名的前面,在看看你的构造函数之前,是什么呢?
是 #include "MainWindow.h"
该头文件内呢? 是一个类的声明, 编译器将该声明作为你的构造函数的返回值来对待了。

为什么会这样,因为你的类声明后面没有分号";"。 编译器只能这么来理解
离线halty86
只看该作者 2楼 发表于: 2009-08-01
dbzhang800 ,多谢了!我粗心了,以后要注意啊!
快速回复
限100 字节
 
上一个 下一个