Добавить собственный QWidget в другой QWidget - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь добавить объект (который наследуется от QWidget) как дочерний элемент к другому QWidget, как показано ниже, он отлично работает с другим нормальным экземпляром QWidget, но не с моим пользовательским классом, любая идея почему?

fenetre.h

#ifndef FENETRE_H
#define FENETRE_H

#include <QWidget>
#include <QMouseEvent>

class Fenetre : public QWidget
{
   Q_OBJECT
public:
   Fenetre();
};

#endif // FENETRE_H

фенетр. cpp

#include "fenetre.h"

Fenetre::Fenetre() : QWidget()
{

}

main . cpp

#include <iostream>
#include <QApplication>
#include <QWidget>
#include "fenetre.h"

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

    QWidget window;
    window.setFixedSize(800,600);

    //This appears
    QWidget rec1;
    rec1.setParent(&window);
    rec1.setFixedSize(100,100);
    rec1.move(400,200);
    rec1.setStyleSheet("background-color: red");

    //This one not
    Fenetre rec2;
    rec2.setParent(&window);
    rec2.setFixedSize(100,100);
    rec2.move(200,200);
    rec2.setStyleSheet("background-color: green");

    window.show();

    return app.exec();
}

PS: я проводил исследования на платформе, но большинство ответов говорят об использовании макета. Спасибо!

1 Ответ

0 голосов
/ 01 апреля 2020

ты скучаешь по родителю:

//header .h
class Fenetre : public QWidget
{
   Q_OBJECT
public:
   Fenetre(QWidget *parent = 0);
};

//source .cpp
Fenetre::Fenetre(QWidget *parent) : QWidget(parent)
{

}
...