[CMake] qt3 simple application question
kdsfinger at gmail.com
kdsfinger at gmail.com
Mon Sep 1 23:00:32 EDT 2008
hi, there
I need to write an application in qt3 and here is my very beginning:
just display a mainwindow and nothing else (the mainwindow is produced
by qt designer windowbase.ui ) I have my own reason to do it in qt3
not in qt4 (for thumbnail view).
During compiling, I get:
-----------------------------
windowbase.h
class WindowBase : public QMainWindow }{...}
-----------------------------
-----------------------------
windowbase.cxx
-----------------------------
I manually create the following files:
-----------------------------
window.h
#ifndef WINDOW_H
#define WINDOW_H
#include "windowbase.h"
class Window : private WindowBase{
public: //nothing else
public slots: //nothing else
};
#endif
---------------------------
---------------------------
window.cpp
#include "window.h"
// nothing else
---------------------------
--------------------------
main.cpp
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <qapplication.h>
#include "window.h"
#include <qmainwindow.h>
int main(int argc, char *argv[])
{
QApplication myApp(argc,argv);
Window * mypWindow = new Window();
myApp.setMainWidget(mypWindow); //error here, line 23
mypWindow->show();
return myApp.exec();
return EXIT_SUCCESS;
}
-----------------------
The CMakeLists.txt is as following (I highly suspect something wrong
here, I stitched the script but not sure what I am doing. And I can't
find any example related to qt3 + cmake + ui anywhere)
-----------------------------
PROJECT(study3)
SET(CMAKE_VERBOSE_MAKEFILE ON)
ADD_DEFINITIONS(-Wall -O2)
FIND_PACKAGE(Qt3 REQUIRED)
ADD_DEFINITIONS(${QT_DEFINITIONS})
INCLUDE_DIRECTORIES(
${CMAKE_BINARY_DIR}
${QT_INCLUDE_DIR}
${QT_INCLUDE_PATH}
)
SET(STUDY3_UI_SRC
windowbase.ui
)
SET(STUDY3_SOURCES
window.cpp main.cpp
)
QT_WRAP_UI(study3 STUDY3_UI_H STUDY3_UI_CPP ${STUDY3_UI_SRC})
QT_WRAP_CPP(study3 STUDY3_UI_CPP ${STUDY3_UI_H})
# I am not sure where and how or if I need to put "moc" somewhere
INCLUDE_DIRECTORIES(
${CMAKE_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}
)
ADD_EXECUTABLE(study3
${STUDY3_SOURCES}
${STUDY3_UI_CPP}
)
TARGET_LINK_LIBRARIES(study3 ${QT_LIBRARIES} png jpeg)
---------------------------
Here is the error message I got during compile:
/study3/main.cpp:23: error: 'QWidget' is an inaccessible base of 'Window'
/usr/share/qt3/include/qmainwindow.h:98: error: 'virtual void
QMainWindow::show()' is inaccessible
/study3/main.cpp:24: error: within this context
/study3/main.cpp:24: error: 'QMainWindow' is not an accessible base of 'Window'
But, if I change the line 23 into
WindowBase * mypWindow = new WindowBase();
then the program can compile and runs fine.
The Window class inherits from WindowBase and I am suppose to do my
own stuff there (in current case I do nothing). What's wrong with my
code? Thanks for your comments.
zl2k
More information about the CMake
mailing list