ich steh leider schon wieder mal auf dem Schlauch mit folgenden Fehlermeldungen.
Ich hab ein QMainWindow, SimDesign, und ein Child-Widget vom Typ QDialog, ImgView.
Im QMainWindow gibt es u.a. ein QLabel für Grafikausgaben, in dem mit der Mouse Markierungen erfolgen sollen, was ich mit einem Eventfilter mache.
Im Child-Widget gibt es auch ein QLabel für andere Art von Grafikausgaben, wo auch mit der Mouse markiert werden soll, was ich durch ein mousePressEvent() im Child-Widget mache.
Die Codestruktur auf das Wesentliche reduziert ist - jetzt mit den relevanten includes:
Header-File von QMainWindow, ipcsimu.h:
Code: Alles auswählen
#include <QFile>
#include <stdio.h>
#include "ui_ipcsimu.h" // fuer Mainwindow
...
#include "imgview.h" // fuer Child-Widget
class SimDesign : public QMainWindow, private Ui::Simu_Qt4
{
Q_OBJECT
...
protected:
bool eventFilter(QObject *obj, QEvent *ev);
...
private:
ImgView *controlImages;
...
}Code: Alles auswählen
#include <QtGui>
#include <QtCore>
...
#include "ipcsimu.h"
SimDesign::SimDesign(QMainWindow *parent) : QMainWindow(parent)
{
setupUi(this);
...
controlImages = new ImgView(this); // das ist das Child-Widget
...
}
...
// das Child-Widget soll durch einen Klick auf eine checkbox sichtbar werden:
void SimDesign::on_checkB_objSegm_stateChanged(void) {
if (checkB_objSegm->isChecked()) {
controlImages->show(); // sichtbar machen
controlImages->raise(); // in den Vordergrund holen
controlImages->activateWindow(); // hat den Fokus
}
else controlImages->hide();
}
...
// Eventfilter soll Mouse nur innerhalb graphView_scene verarbeiten:
bool SimDesign::eventFilter(QObject *obj, QEvent *event) {
...
if (obj == graphView_scene) {
// Behandlung der Mouse
...
}
else {
// pass the event on to the parent class
return QMainWindow::eventFilter(obj, event);
}Code: Alles auswählen
#include <QtGui/QDialog>
#include "ui_imgview.h"
class ImgView : public QDialog, private Ui::ImgViewClass
{
Q_OBJECT
...
private slots:
...
private:
void mousePressEvent(QMouseEvent *event);
...
QPixmap cbild;
}
Code: Alles auswählen
#include "imgview.h"
void ImgView::mousePressEvent(QMouseEvent *event) {
int x,y, val;
x = event->x()-2; // hier wird der erste Fehler gemeldet: Zeile 425
...
}
void ImgView::overlay_edges(void) {
...
QPainter painter(&cbild); // hier wird ein zweiter Fehler gemeldet: Zeile 280
...
}- /usr/local/Trolltech/Qt-4.3.2/include/QtGui/qwidget.h forward declaration of ‘struct QMouseEvent’ line 70
invalid use of incomplete type ‘struct QMouseEvent’ line 425
In der zweiten Zeile der Fehlermeldung verstehe ich nicht, was da "invalid" und "incomplete type" sein soll. Genau so eine Zeile habe ich auch in anderen cpp-Files, und dort ist sie ok.
Die zweite Fehlermeldung lautet:
- variable ‘QPainter painter’ has initializer but incomplete type, line 280
Früher hatte ich das, was jetzt ein Child-Widget ist, als QMainWindow. Die Zeilen, an denen jetzt Fehler gemeldet werden, sind identisch geblieben. Es muss etwas mit der Beziehung Parent- und Child-Widget zu tun haben, bloß was?
Wenn jemand Tipps hat, damit ich von meinem Schlauch runterkomme, sehr willkommen