IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Un widget qui occupe la totalité de la fenêtre

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut Un widget qui occupe la totalité de la fenêtre
    Bonjour à tous,

    Je cherche à avoir un widget qui occupe la totalité de la fenêtre principale, en gérant la taille des menus.

    Je me suis donc tournée vers le SetCentralWidget d'une QMainWindow.

    Mais voilà, ma fenêtre étant redimensionnée en 800*600, lorsque je fais dans ma classe dérivée de QMainWindow :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    QWidget *widget = new QWidget(this);
    setCentralWidget(widget);
    Celui-ci a une taille de 100*30

    Et lorsque je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    QWidget *widget = new QWidget();
    setCentralWidget(widget);
    Il a une taille de 640*480...

    Je pensais à un problème que ma fenêtre n'était pas encore affichée etc. Mais j'ai délayé l'appel à la fonction size() du widget central me renvoit toujours les mêmes résultats dépendant du lien de parenté avec la fenêtre principale ou non.

    Du coup je me demande à quoi sert ce "setCentralWidget", mais surtout comment avoir un widget qui occupe toute la place disponible ?

    Je pense plutôt qu'il faut que je fasse un widget qui "écoute" les fluctuations de la fenêtre principale pour se redimensionner par lui même, mais j'ai peur de rentrer dans la "bidouille"..

    Y a-t-il une solution propre ?

    Merci beaucoup,

    A bientôt

  2. #2
    Membre confirmé Avatar de sebmag
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Novembre 2009
    Messages : 52
    Par défaut
    Citation Envoyé par mister3957 Voir le message
    Et lorsque je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    QWidget *widget = new QWidget();
    setCentralWidget(widget);
    Il a une taille de 640*480...
    Bonjour,

    Normalement le code suivant doit être bon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QWidget *widget = new QWidget; //Sans parenthèses ? je ne sais pas si c'est dû à ça !
    setCentralWidget(widget);
    Tu auras toujours un petit espace en haut à cause de la barre des menus mais le widget devrait prendre tout l'espace de ta zone centrale !

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut
    Bonjour,

    Merci pour cette réponse mais avec ou sans les parenthèses, ça fait pareil.

  4. #4
    Membre confirmé Avatar de sebmag
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Novembre 2009
    Messages : 52
    Par défaut
    Peux-tu mettre le code complet de ta fenetre ? on y verra plus clair !

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut
    Oui biensûr :

    CMainWindow.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class CMainWindow : public QMainWindow
    {
    Q_OBJECT
     
    public:
    	static CMainWindow& GetInstance();
     
    protected:
    	void showEvent( QShowEvent* e );
     
    private:
    	CMainWindow();
    	~CMainWindow();
    };
    CMainWindow.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    CMainWindow::CMainWindow()
    {
    	this->resize(QSize(800, 600));
    }
     
    void CMainWindow::showEvent( QShowEvent* e )
    {
    	QWidget *widget = new QWidget;
    	setCentralWidget(widget);
     
    	QSize size = widget->size(); // 640*480 :'(
    }
     
    CMainWindow& CMainWindow::GetInstance()
    {
    	static CMainWindow oInstance;
    	return oInstance;
    }
     
    CMainWindow::~CMainWindow()
    {
     
    }
    Merci pour ton aide.

  6. #6
    Membre confirmé Avatar de sebmag
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Novembre 2009
    Messages : 52
    Par défaut
    Bonjour,

    Pourquoi le constructeur et le destructeur de ta classe sont en "private" ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    class CMainWindow : public QMainWindow
    {
    Q_OBJECT
     
    public:
            CMainWindow();
            ~CMainWindow();
            static CMainWindow& GetInstance();
     
    protected:
            void showEvent( QShowEvent* e );
     
    private:
     
    };

    et c'est quoi ce static CMainWindow& GetInstance(); ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    CMainWindow::CMainWindow()
    {
            resize(QSize(800, 600));
    }
     
    void CMainWindow::showEvent( QShowEvent* e )
    {
            QWidget *widget = new QWidget;
            setCentralWidget(widget);
    }
     
    CMainWindow& CMainWindow::GetInstance()
    {
            static CMainWindow oInstance;
            return oInstance;
    }
     
    CMainWindow::~CMainWindow()
    {
     
    }
    J'ai testé le code et le widget principal occupe toute la fenetre !

Discussions similaires

  1. Réponses: 6
    Dernier message: 12/05/2009, 00h36
  2. Creation d'un widget qui herite de Frame
    Par ganouri dans le forum Tkinter
    Réponses: 3
    Dernier message: 08/12/2008, 14h29
  3. daemon mysqld qui occupe 100% du proc
    Par Kunai dans le forum Requêtes
    Réponses: 2
    Dernier message: 08/04/2008, 19h56
  4. image de fond qui occupe tout l'élément
    Par faamugol dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 06/12/2007, 23h04
  5. [css] background image qui occupe toute la surface
    Par mariogarcia dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 23/02/2006, 14h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo