2011-7-12
1、在mainwindow.h 中定义了一个class MyMainWindow如下:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QtGui>
#include <QMainWindow>
#include "ui_scct.h"
class QAction;
class QMenu;
class MyMainWindow: public QMainWindow
{
Q_OBJECT
public:
MyMainWindow();
private:
QTextCodec * fileMenu;
QMenu * editMenu;
Ui::MainWindow ui;
};
#endif //MAINWINDOW_H
2、在mainwindow.cpp文件中定义了MyMainWindow类构造函数的实现:
#include "mainwindow.h"
MyMainWindow::MyMainWindow()
{
setWindowTitle(QMainWindow::tr("Stereo_Camera_Calibratin_Tool"));
ui.setupUi(this);
//connect(ui.Spin
}
1)如果没有黄色部分的域名前缀,则compile 时出错,
1>moc_mainwindow.cpp
1>mainwindow.cpp
1>.\mainwindow.cpp(3) : error C2059: syntax error : ')'
1>.\mainwindow.cpp(4) : error C2143: syntax error : missing ';' before '{'
1>.\mainwindow.cpp(4) : error C2447: '{' : missing function header (old-style formal list?)
1>main.cpp
1> Generating Code...
提示 在MyMainWindow()前应有前缀int,
2)如果变成 int MyMainWindow()
{。。。。
……..
}
则 出现新的错误:
1>Compiling...
1>moc_mainwindow.cpp
1>mainwindow.cpp
1>.\mainwindow.cpp(6) : error C3861: 'setWindowTitle': identifier not found
1>.\mainwindow.cpp(7) : error C2065: 'ui' : undeclared identifier
1>.\mainwindow.cpp(7) : error C2228: left of '.setupUi' must have class/struct/union
1> type is ''unknown-type''
1>.\mainwindow.cpp(7) : error C2673: 'MyMainWindow' : global functions do not have 'this' pointers
1>main.cpp
1>Generating Code...
1>Build log was saved at "file://d:\Experiment Data\Microsoft Visual Studio 9\scct\debug\BuildLog.htm"
1> scct - 4 error(s), 0 warning(s)
3)如果在setWindowTitle前加上域名空间 QMainWindow::setWindowTitle()则又会出现如下错误:
1>moc_mainwindow.cpp
1>mainwindow.cpp
1>.\mainwindow.cpp(6) : error C2352: 'QWidget::setWindowTitle' : illegal call of non-static member function
1> c:\qt\4.6.2\include\qtgui\qwidget.h(367) : see declaration of 'QWidget::setWindowTitle'
1>.\mainwindow.cpp(7) : error C2065: 'ui' : undeclared identifier
1>.\mainwindow.cpp(7) : error C2228: left of '.setupUi' must have class/struct/union
1> type is ''unknown-type''
1>.\mainwindow.cpp(7) : error C2673: 'MyMainWindow' : global functions do not have 'this' pointers
1>main.cpp
1> Generating Code...
同时, ui 这个ui 文件的实例(已经在mainwindow.h中定义Ui::MainWindow ui;)提示不能识别。所以 只有在构造函数前加上 类的域名空间 才能解决问题! 如:MyMainWindow::MyMainWindow()