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