2013-07-12 47 views
0

即時嘗試使用cmake構建一個樣板C++應用程序,並在名爲main_window.xml的.ui文件中定義主窗口。我已經學習了一些教程並試圖拼湊出一個方法,但是我的知識最多隻有一些,我遇到了一個我不知道如何解決的錯誤。cmake和Qt boilderplate,無法初始化'QMainWindow *'類型的錯誤參數

是否有人知道我即將發生錯誤,或者即使是在吠叫正確的樹。

繼承人的main.cpp中

#include <QApplication> 
#include "ui_main_window.h" 

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 
    QWidget *widget = new QWidget; 
    Ui::MainWindow ui; 
    ui.setupUi(widget); 

    widget->show(); 
    return app.exec(); 
} 

這裏的的CMakeLists.txt

cmake_minimum_required(VERSION 2.8) 

PROJECT(test_proj) 
FIND_PACKAGE(Qt4 REQUIRED) 

# include the current binary output directory as thats where the intermediate Qt fiels will be placed 
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) 

INCLUDE(${QT_USE_FILE}) 
ADD_DEFINITIONS(${QT_DEFINITIONS}) 

# set sources of program 
# only files that need preprocessgin by Qt need be included 
SET(test_proj_SOURCES main.cpp) 
SET(test_proj_HEADERS ui_main_window.h) 
SET(test_proj_FORMS main_window.ui) 

# this block creates .cpp and .h files from the .ui files 
QT4_WRAP_CPP(test_proj_HEADERS_MOC ${test_proj_HEADERS}) 
QT4_WRAP_UI(test_proj_FORMS_HEADERS ${test_proj_FORMS}) 
# QT4_ADD_RESOURCES(test_proj_RESOURCES_RCC ${test_proj_RESOURCES}) 


ADD_EXECUTABLE(test_proj ${test_proj_SOURCES} 
          ${test_proj_HEADERS} 
          ${test_proj_FORMS}) 

TARGET_LINK_LIBRARIES(test_proj ${QT_LIBRARIES}) 

這裏的編譯錯誤,我得到

Jonathans-MacBook-Pro:build jonathantopf$ make clean;make 
[ 50%] Generating ui_main_window.h 
Scanning dependencies of target laser_scan 
[100%] Building CXX object CMakeFiles/laser_scan.dir/main.cpp.o 
/projects/laser_scanner/src/main.cpp:49:17: error: cannot initialize a parameter of type 'QMainWindow *' with an lvalue of type 
     'QWidget *' 
    ui.setupUi(widget); 
       ^~~~~~ 
/projects/laser_scanner/build/ui_main_window.h:48:31: note: passing argument to parameter 'MainWindow' here 
    void setupUi(QMainWindow *MainWindow) 
          ^
1 error generated. 
make[2]: *** [CMakeFiles/laser_scan.dir/main.cpp.o] Error 1 
make[1]: *** [CMakeFiles/laser_scan.dir/all] Error 2 
make: *** [all] Error 2 
Jonathans-MacBook-Pro:build jonathantopf$ 

回答

1

你的主窗口從QMainWindow繼承,所以您應該在您的主要樂趣中將QWidget更換爲QMainWindow ction。

然而,沒有窗體類的窗體是不常見的。我建議你在Qt Creator中使用「添加新的 - Qt - Designer Form Class」來創建一個類。

相關問題