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

Qt Discussion :

QMdiSubWindow s'affiche étrangement


Sujet :

Qt

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 98
    Par défaut QMdiSubWindow s'affiche étrangement
    Salut

    J'ai réalisé la fenêtre suivante sous Qt Designer :
    (voir première image en pj)

    Comme vous pouvez le constater, elle s'affiche bien en prévisu depuis le designer

    Il s'agit d'une fenête qui étend QMdiSubWindow
    Je l'invoque ainsi dans mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    _sampleTrafficDisplayer = new IhmGenericTrafficDisplayer(_desktopMdiArea);
    où _desktopMdiArea est un QMdiArea

    Le constructeur de ma classe fait appel au fichier .h généré par Qt. cela donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    IhmGenericTrafficDisplayer::IhmGenericTrafficDisplayer(QWidget *parent)
    	: QMdiSubWindow(parent)
    {
    	ui.setupUi(this);
    	//register this traffic Observer to the core
     
              //(...)
    }
    Au moment ou j'affiche la fenêtre dans mon IHM elle apparaît ainsi :

    (voir deuxième image en pj)


    Indices supplémentaires :
    J'ai mis un Grid layout sur ma fenêtre. J'ai le mm comportement avec un VerticalLayout. En revanche, si je ne met pas de layout ca s'affiche mieux mais je souhaite bénéficier du comportement qu'apporte le layout.

    autre indice : J'ai initialisé cette classe graphique avec le wizard du plugin qt pour visual studio 2008

    dernier indice : au moment de la compile, j'ai ce message qui est remonté.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    1>
    'layoutWidget'*isn't*a*valid*widget
    1>'layoutWidget'*isn't*a*valid*widget
    1>'layoutWidget'*isn't*a*valid*widget
    1>''*isn't*a*valid*widget
    J'ai modifié le .ui à la main pour supprimer les références étranges citées ci-dessus mais cela ne change pas le comportement au moment de l'affichage.

    Si vous avez déja rencontré cela, je suis interressé par les solutions que vous auriez pu utiliser.
    Sinon, si vous avez des idées, je suis preneur également.


    Merci d'avance

    Traiangueul.

    JE vous met les sources de la classe si ca peut vous aider :

    ui_ihm_genericTrafficDisplayer.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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
    /********************************************************************************
    ** Form generated from reading UI file 'ihm_genericTrafficDisplayer.ui'
    **
    ** Created: Thu 25. Nov 15:15:39 2010
    **      by: Qt User Interface Compiler version 4.6.2
    **
    ** WARNING! All changes made in this file will be lost when recompiling UI file!
    ********************************************************************************/
     
    #ifndef UI_IHM_GENERICTRAFFICDISPLAYER_H
    #define UI_IHM_GENERICTRAFFICDISPLAYER_H
     
    #include <QtCore/QVariant>
    #include <QtGui/QAction>
    #include <QtGui/QApplication>
    #include <QtGui/QButtonGroup>
    #include <QtGui/QGridLayout>
    #include <QtGui/QHeaderView>
    #include <QtGui/QLabel>
    #include <QtGui/QListWidget>
    #include <QtGui/QMdiSubWindow>
     
    QT_BEGIN_NAMESPACE
     
    class Ui_IhmGenericTrafficDisplayerClass
    {
    public:
        QGridLayout *gridLayout;
        QLabel *_labelOverView;
        QLabel *_labelKindOfTraffic;
        QLabel *_labelLastObservation;
        QListWidget *_listWidgetLastReception;
     
        void setupUi(QMdiSubWindow *IhmGenericTrafficDisplayerClass)
        {
            if (IhmGenericTrafficDisplayerClass->objectName().isEmpty())
                IhmGenericTrafficDisplayerClass->setObjectName(QString::fromUtf8("IhmGenericTrafficDisplayerClass"));
            IhmGenericTrafficDisplayerClass->setWindowModality(Qt::ApplicationModal);
            IhmGenericTrafficDisplayerClass->resize(447, 459);
            gridLayout = new QGridLayout(IhmGenericTrafficDisplayerClass);
            gridLayout->setSpacing(6);
            gridLayout->setContentsMargins(11, 11, 11, 11);
            gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
            _labelOverView = new QLabel(IhmGenericTrafficDisplayerClass);
            _labelOverView->setObjectName(QString::fromUtf8("_labelOverView"));
            QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);
            sizePolicy.setHorizontalStretch(0);
            sizePolicy.setVerticalStretch(0);
            sizePolicy.setHeightForWidth(_labelOverView->sizePolicy().hasHeightForWidth());
            _labelOverView->setSizePolicy(sizePolicy);
            _labelOverView->setMinimumSize(QSize(180, 20));
     
            gridLayout->addWidget(_labelOverView, 0, 0, 1, 1);
     
            _labelKindOfTraffic = new QLabel(IhmGenericTrafficDisplayerClass);
            _labelKindOfTraffic->setObjectName(QString::fromUtf8("_labelKindOfTraffic"));
            sizePolicy.setHeightForWidth(_labelKindOfTraffic->sizePolicy().hasHeightForWidth());
            _labelKindOfTraffic->setSizePolicy(sizePolicy);
            _labelKindOfTraffic->setMinimumSize(QSize(150, 20));
     
            gridLayout->addWidget(_labelKindOfTraffic, 1, 0, 1, 1);
     
            _labelLastObservation = new QLabel(IhmGenericTrafficDisplayerClass);
            _labelLastObservation->setObjectName(QString::fromUtf8("_labelLastObservation"));
            sizePolicy.setHeightForWidth(_labelLastObservation->sizePolicy().hasHeightForWidth());
            _labelLastObservation->setSizePolicy(sizePolicy);
            _labelLastObservation->setMinimumSize(QSize(99, 20));
     
            gridLayout->addWidget(_labelLastObservation, 2, 0, 1, 1);
     
            _listWidgetLastReception = new QListWidget(IhmGenericTrafficDisplayerClass);
            _listWidgetLastReception->setObjectName(QString::fromUtf8("_listWidgetLastReception"));
     
            gridLayout->addWidget(_listWidgetLastReception, 3, 0, 1, 1);
     
            _listWidgetLastReception->raise();
            _labelOverView->raise();
     
            retranslateUi(IhmGenericTrafficDisplayerClass);
     
            QMetaObject::connectSlotsByName(IhmGenericTrafficDisplayerClass);
        } // setupUi
     
        void retranslateUi(QMdiSubWindow *IhmGenericTrafficDisplayerClass)
        {
            IhmGenericTrafficDisplayerClass->setWindowTitle(QApplication::translate("IhmGenericTrafficDisplayerClass", "Sample Gui Traffic Observer", 0, QApplication::UnicodeUTF8));
            _labelOverView->setText(QApplication::translate("IhmGenericTrafficDisplayerClass", "This is a generic Traffic Displayer", 0, QApplication::UnicodeUTF8));
            _labelKindOfTraffic->setText(QApplication::translate("IhmGenericTrafficDisplayerClass", "It Displays traffic of Kind : ", 0, QApplication::UnicodeUTF8));
            _labelLastObservation->setText(QApplication::translate("IhmGenericTrafficDisplayerClass", "Last Observation is :", 0, QApplication::UnicodeUTF8));
        } // retranslateUi
     
    };
     
    namespace Ui {
        class IhmGenericTrafficDisplayerClass: public Ui_IhmGenericTrafficDisplayerClass {};
    } // namespace Ui
     
    QT_END_NAMESPACE
     
    #endif // UI_IHM_GENERICTRAFFICDISPLAYER_H
    .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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    #pragma once
     
    #include <QtGui/QMdiSubWindow>
    #include <QtCore/QStringList>
    #include "ui_ihm_genericTrafficDisplayer.h"
    #include "ITrafficObserver.h"
     
    class IhmGenericTrafficDisplayer : public QMdiSubWindow , ITrafficObserver
    {
    	Q_OBJECT
     
    public:
    	IhmGenericTrafficDisplayer(QWidget *parent = 0);
    	~IhmGenericTrafficDisplayer();
     
     
    	//implementation of ITrafficObserver
    	E_TRAFFIC_ID getTrafficId();
    	void receiveTraffic(E_TRAFFIC_ID aTrafficId, QStringList aFields);
     
     
    private:
    	Ui::IhmGenericTrafficDisplayerClass ui;
    };
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    #include "ihm_genericTrafficDisplayer.h"
    #include "iTrafficObserver.h"
    #include "hmi_facade.h"
     
    extern registerTrafficObserverType coreDllRegisterTrafficObserver;
    extern unregisterTrafficObserverType coreDllUnregisterTrafficObserver;
     
    IhmGenericTrafficDisplayer::IhmGenericTrafficDisplayer(QWidget *parent)
    	: QMdiSubWindow(parent)
    {
    	ui.setupUi(this);
    	//register this traffic Observer to the core
    	coreDllRegisterTrafficObserver(this);
    }
     
    IhmGenericTrafficDisplayer::~IhmGenericTrafficDisplayer()
    {
     
    	//unregister this traffic Observer from the core
    	coreDllUnregisterTrafficObserver(this);
    }
     
     
    	//implementation of ITrafficObserver
    E_TRAFFIC_ID IhmGenericTrafficDisplayer::getTrafficId(){
    	return FAKE_TRAFFIC;
    }
     
    void IhmGenericTrafficDisplayer::receiveTraffic(E_TRAFFIC_ID aTrafficId, QStringList aFields) {
    	ui._labelKindOfTraffic->setText("It Displays traffic of Kind : " + QString(aTrafficId));
    	for (int lIdx = 0; lIdx < aFields.size(); lIdx ++) {
    		ui._listWidgetLastReception->addItem(aFields[lIdx]);
    	}
     
    }
    Images attachées Images attachées   

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. afficher du texte
    Par Mau dans le forum OpenGL
    Réponses: 10
    Dernier message: 24/06/2003, 15h31
  2. Réponses: 6
    Dernier message: 10/09/2002, 03h35
  3. Copier et afficher une copie d'ecran
    Par Bobx dans le forum Langage
    Réponses: 6
    Dernier message: 02/08/2002, 22h20
  4. Afficher/Masquer un bouton comme IE 6
    Par benj63 dans le forum C++Builder
    Réponses: 3
    Dernier message: 29/07/2002, 13h12
  5. Réponses: 2
    Dernier message: 10/06/2002, 11h03

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