Seite 1 von 1

Stylesheet Problem (einfaches Beispiel)

Verfasst: 22. Februar 2010 11:52
von Chris81T
Hallo,

ich hab ein Problem mit dem Setzen von einem Stylesheet. Dieses Problem hab ich in einem einfachen Beispiel nachgebildet. Schaut es euch mal an. Erklärung folgt im Anschluss:

Code: Alles auswählen

#include <QtGui/QApplication>
#include "window.h"
#include "mywidget.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

//    Window w;
    MyWidget w;

    w.show();
    return a.exec();
}

Code: Alles auswählen

#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QtGui/QWidget>

class MyWidget : public QWidget
{
    Q_OBJECT

public:
    MyWidget(QWidget *parent = 0);
    ~MyWidget();
};

#endif // MYWIDGET_H

Code: Alles auswählen

#include "mywidget.h"

MyWidget::MyWidget(QWidget *parent)
    : QWidget(parent)
{
    setStyleSheet("MyWidget {background-color: blue;}");
}

MyWidget::~MyWidget()
{

}

Code: Alles auswählen

#ifndef WINDOW_H
#define WINDOW_H

#include <QWidget>

class Window : public QWidget
{
Q_OBJECT
public:
    Window(QWidget *parent = 0);
};

#endif // WINDOW_H

Code: Alles auswählen

#include "window.h"

#include "mywidget.h"

Window::Window(QWidget *parent) :
    QWidget(parent)
{
    MyWidget *my1 = new MyWidget(this);
    my1->setGeometry(10,10,100,100);
}
Es gibt die von QWidget abgeleitete Klasse MyWidget. Im ctor wird ein stylesheet gesetzt.
Wenn ich nun in der main Funktion direkt ein MyWidget erzeuge und es mit show() anzeigen lasse, erscheint auch korrekt ein blau hinterlegtes Widget.

Jetzt zum Problem:
Ich erzeuge in der main nicht ein MyWidget, sondern ein Window Objekt (simples Widget), so wird das darin erzeugte MyWidget (siehe ctor von Window) nicht blau hinterlegt?! Hat jemand ne Ahnung?

Code: Alles auswählen

#include <QtGui/QApplication>
#include "window.h"
#include "mywidget.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    Window w;  // create a Window object
//    MyWidget w;

    w.show();
    return a.exec();
}
Wer selber mal ein bisschen testen möchte, im Anhang liegt das Bsp bei.