Seite 1 von 1

Benutzen des Mocs führt zu nicht ausführung von stylesheets

Verfasst: 5. Juni 2013 19:42
von Ryu1991
Hey
ich benutze gerade QT5 und VisualStudio2010 ohne Add in oder so.
Mein Projekt ist aufgeteilt in 2 Projekte: eine DLL die die GUI enthällt, und eine Win32 anwendung, die ich mit QT schreibe, die den Controler enthällt (bzw bist jetzt lediglich die Main, in der die Gui aufgerufen wird)

Bisher lief alles relativ gut.
Jetzt bin ich gerade dabei ein Custom Widget zu entwerfen. Was aus ein paar buttons und einem hintergrundbild besteht. Das mit dem Background hat auch wunderbar funktioniert. Bis ich Signale implementieren wollte.
Dafür musste ich den header durch den moc jagen. Kein Problem, das file hinzugefügt, alles ließ sich compilieren. Doch plötzlich wird bei meinem widget der Hintergrund nicht mehr angezeigt.
Auch ein slot in meinem customWidget der schon funktioniert hatte (hinzufügen/entfernen eines Grünen Rahmens um den hintergrund) funktioniert nicht mehr, obwohl die Funktion ausgeführt wird.
Hier mal der Code

compasswidget.cpp

Code: Alles auswählen

gui::CompassWidget::CompassWidget(QWidget *Parent)
	:QWidget(Parent)
{
	setBorderVisible(false);
}

void gui::CompassWidget::setBorderVisible(bool isVisible)
{
	if(isVisible)
	{
		setStyleSheet("background: url(./Img/Gui/Compass.jpg);"
				  "background-position: center;"
				  "background-repeat: no-repeat;"
				  "border: 2px solid green;");
		borderVisible = true;
	}else{
		setStyleSheet("background: url(./Img/Gui/Compass.jpg);"
				  "background-position: center;"
				  "background-repeat: no-repeat;"
				  "border: none;");
		borderVisible = false;
	}
}
compasswidget.h

Code: Alles auswählen

class CompassWidget : public QWidget
	{
		Q_OBJECT 

		public:
			CompassWidget(QWidget *Parent = 0);
			~CompassWidget();

			void setBorderVisible(bool isVisible = true);
		
		public slots:
			void toggleBorderVisibility();

		signals:
			void released(ButtonId button);

		private:
			bool borderVisible;
			std::map<ButtonId, QPushButton*> Buttons;

		private slots:
			void nbp();
			void nebp();
			void ebp();
			void sebp();
			void sbp();
			void swbp();
			void wbp();
			void nwbp();
	};
Jeder von den Slots ist mit einem der 8 Button verbunden, und macht nichts anderes als das Signal auszulösen.
Wenn man die Slots und das Q_Object auskommentiert, und die moc datei nicht mitcompiliert, dann wird der hintergrund angezeigt. Wenn nicht, dann nicht, aber ich bekomme keine Fehlermeldung.
Hat irgend jemand eine Idee?