Ich habe auch nach längerem Suchen keine Lösung für folgendes Problem gefunden:
Ich erstelle ein einfaches MainWindow mit dem Designer.
Ich prozessiere die Ui-Datei mit dem UIC.
Nun enthält die entstehende Klassendeklaration keine Angabe zur Basisklasse meines Widgets, folglich kompiliert der Rest nicht.
Früher (Qt 3.2 habe ich glaube ich zuletzt benutzt, ist schon länger her...) hat das funktioniert. Jetzt muss ich die Basisklasse in das Header-File von Hand eintragen, damit das Projekt kompiliert. Das kann ja aber nicht Sinn der Sache sein, weil das Ding nach jeder Änderung neu erstellt wird. Weiss dazu jemand eine Lösung? Oder habe ich einen neuen Bug gefunden (Stolz...)?
Ich verwende folgendes System:
Windows XP SP3
QT4.4.3 Open Source Edition
MS VS 2008
Die Custom Build Rules habe ich richtig angelegt, aber das spielt hier keine Rolle, denn auch manuell entsteht der gleiche Fehler.
Qt habe ich selbst kompiliert, falls das einen Einfluss haben sollte.
Anbei Ausschnitte des Codes. Erst das ui-File:
Code: Alles auswählen
<ui version="4.0" >
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow" >
<property name="geometry" >
...
<rect>Code: Alles auswählen
** Form generated from reading ui file 'mainwindow.ui'
**
** Created: Wed 10. Dec 15:41:15 2008
** by: Qt User Interface Compiler version 4.4.3
**
** WARNING! All changes made in this file will be lost when recompiling ui file!
********************************************************************************/
#ifndef UI_MAINWINDOW_H
#define UI_MAINWINDOW_H
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QMainWindow>
#include <QtGui/QMenuBar>
#include <QtGui/QStatusBar>
#include <QtGui/QWidget>
QT_BEGIN_NAMESPACE
class Ui_MainWindow
{
public:
QWidget *centralwidget;
QMenuBar *menubar;Code: Alles auswählen
namespace Ui {
class MainWindow: public Ui_MainWindow {};
} // namespace UiHier dann der Compiler-Fehler:
Code: Alles auswählen
error C2664: QApplication::setActiveWindow: Konvertierung des Parameters1 von Ui::MainWindow * in QWidget * nicht möglich.Ein einfaches Ableiten von QMainWindow (public) löst das Problem wie gesagt.
Weiss jemand eine Lösung?
Ciao und vielen Dank,
axw