Variable unbekannt, Initialisierungslisten
-
Ich habe hier ein Beispiel wo ich eine Initialisierungsliste für eine überladene Klasse nutze und mir unsicher bin ob das so überhaupt richtig ist.
Zudem bekomme ich den Fehler, dass die Variable "Video" unbekannt ist, was ich nicht verstehe.Der Code verwendet sehr viel Qt spezifisches, das Problem sollte aber am C++ Code liegen.
Ich leite eine Dialog von MaximizeOnScreen ab, der zudem eine Variable 'Video' enthält:
#include "MaximizeOnScreen.h" #include "widgetVideoPlayer.h" class DialogPhaseShaperVideo : public QDialog, protected Ui_DialogPhaseShaperVideo, protected MaximizeOnScreen { Q_OBJECT public: DialogPhaseShaperVideo(QWidget* parent = 0, Qt::WFlags flags = 0); virtual ~DialogPhaseShaperVideo(); private: void initWidgets(); void maximizeOnScreen(); void resizeOutput(); widgetVideoPlayer Video; };Der Dialog enhält dan praktisch nichts außer dem Video, was aber nicht gefunden wird:
DialogPhaseShaperVideo::DialogPhaseShaperVideo(QWidget* parent /*= 0*/, Qt::WFlags flags /*= 0*/) : QDialog(parent, flags), MaximizeOnScreen(this) { setupUi(this); initWidgets(); maximizeOnScreen(); resizeOutput(); } DialogPhaseShaperVideo::~DialogPhaseShaperVideo() { } void DialogPhaseShaperVideo::initWidgets() { QPalette pal = this->palette(); pal.setColor(QPalette::Window, Qt::black); this->setPalette(pal); setWindowFlags(Qt::FramelessWindowHint); } void DialogPhaseShaperOutput::resizeOutput() { QRect rectMonitorSize = MonitorSize(); QRect rectBeamShaperSize = QRect(0,0, ShaperList[iCurrentShaper].AperturPixelSize.width(), ShaperList[iCurrentShaper].AperturPixelSize.height()); Video.setGeometry(QRect( (rectMonitorSize.width() - rectBeamShaperSize.width())/2, (rectMonitorSize.height() - rectBeamShaperSize.height())/2, rectBeamShaperSize.width(), rectBeamShaperSize.height())); }Fehlermeldung:
1>.\src\DialogPhaseShaperVideo.cpp(33) : error C2065: 'Video': nichtdeklarierter Bezeichner
1>.\src\DialogPhaseShaperVideo.cpp(33) : error C2228: Links von ".setGeometry" muss sich eine Klasse/Struktur/Union befinden.Die Klasse MaximizeOnScreen sieht so aus: (Sie benötigt den Dialog als Pointer weshalb ich diesen in dem Konstruktor vom Dialog in der Initialisierungsliste übergebe. Ist das so korrekt, also ist dann der Dialog-Pointer schon initialisiert worden?)
#include <QtGui/QDesktopWidget> class MaximizeOnScreen { //Q_OBJECT public: MaximizeOnScreen(QDialog * dlg) : m_ScreenNumber(2), dialog(dlg) { int screenquantity = MonitorScreens.numScreens(); int primaryScreen = MonitorScreens.primaryScreen(); rectFirstMonitorSize = MonitorScreens.screenGeometry(primaryScreen); rectSecondMonitorSize = MonitorScreens.screenGeometry(primaryScreen + 1); } virtual ~MaximizeOnScreen(); private: QRect rectFirstMonitorSize; QRect rectSecondMonitorSize; int m_ScreenNumber; QDesktopWidget MonitorScreens; QDialog * dialog; public: virtual void resizeOutput() = 0; void maximizeOnScreen() { if (m_ScreenNumber == 1) { dialog->setGeometry(QRect(rectFirstMonitorSize.left(), 0, rectSecondMonitorSize.width(), rectSecondMonitorSize.height())); dialog->setGeometry(QRect(0, 0, 1024, 768)); } if (m_ScreenNumber == 2) { dialog->setGeometry(QRect(rectFirstMonitorSize.width()+1, 0, rectSecondMonitorSize.width(), rectSecondMonitorSize.height())); } } QRect MonitorSize() { if (m_ScreenNumber == 2) { return rectSecondMonitorSize; } else { return rectFirstMonitorSize; } } void switchSreen() { if (m_ScreenNumber == 1) { m_ScreenNumber = 2; maximizeOnScreen(); return; } if (m_ScreenNumber == 2) { m_ScreenNumber = 1; maximizeOnScreen(); return; } } };
-
Da fehlt auch sicher kein namespace oder so was?
-
DialogPhaseShaperOutput::resizeOutput ?