Von QWidget erben: Anderes verhalten?



  • Hallo zusammen

    Ich habe jetzt nach einem halben Jahr Pause wieder angefangen, mit Qt zu arbeiten. Jetzt habe ich allerdings folgendes Problem:

    - Ich habe ein QMainWindow, erstelle ein QWidget und setze das auch als centralWidget
    - Ich habe eine eigene Klasse, die von QWidget erbt. Eine Instanz davon möchte ich nun dem centralWidget hinzufügen. Leider wird da nichts angezeigt - ich bin wirklich ein bisschen am verzeifeln.
    - Wenn ich das QWidget "einfach so" erstelle (also keine eigene Klasse und erben), dann funktioniert alles wie gewünscht.

    Mein Widget (ich habe jetzt einfach mal eine Hintergrundfarbe gesetzt)

    #include <QWidget>
    class StartScreen : public QWidget
    {
        Q_OBJECT
    public:
        explicit StartScreen(QWidget *parent = 0);
    };
    
    #include "startscreen.h"
    StartScreen::StartScreen(QWidget *parent) :
        QWidget(parent)
    {
        this->setStyleSheet("background-color: rgb(0, 255, 0);"); // gruen
    }
    

    Mein Main Window

    GameWindow::GameWindow(QWidget *parent)
        : QMainWindow(parent)
    {
        resize(600, 400);
        mainWidget = new QWidget(); // mein centralWidget
        mainWidget->setStyleSheet("background-color: rgb(255, 0, 0);"); // rot
        startScreen = new StartScreen(mainWidget); // das nicht funktionierende widget
        startScreen->setGeometry(QRect(0, 0, 300, 300));
    
        QWidget* tmp = new QWidget(mainWidget); // dies hier funktioniert
        tmp->setGeometry(QRect(100, 100, 30, 30));
        tmp->setStyleSheet("background-color: rgb(0, 0, 255);"); // blau
    
        this->setCentralWidget(mainWidget);
    }
    

    Resultat: Ein "rotes Fenster" mit einem blauen Viereckchen... Vom grünen Widget fehlt leider jede Spur.

    Ideen? So kompliziert kann das doch gar nicht sein 🕶
    QWidget ist schon zum erben gedacht, oder?

    Gruss & vielen Dank




Anmelden zum Antworten