新类class的定义中,类中函数的域名空间很重要!!!

 

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()

 

你可能感兴趣的:(UI,function,Microsoft,Class,include,Pointers)