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$