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 :

Centrer un QFileDialog


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 248
    Par défaut Centrer un QFileDialog
    Salut,

    D'après la doc (Qt 4.3), QFileDialog::getSaveFileName(...) se positionne automatiquement au centre du widget parent. Ce qui n'est pas le cas pour moi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	QFileDialog dialog(this->Implementation->Parent);
    	QString file = dialog.getSaveFileName(this->Implementation->Parent,
    		"Save Server State:",QString(), filters);
    le dialog se positionne au coin haut-gauche de mon écran. J'ai essayé aussi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	QString file = dialog.getSaveFileName(QApplication::desktop(),
    		"Save Server State:",QString(), filters);
    Est ce que j'oublie quelque chose ?

    Merci

  2. #2
    Membre expérimenté Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Par défaut
    Salut, tu veux le centrer dans implementation ? Est-ce qu'il se centre par rapport au parent de Implémentation (je suppose que Implementation->Parent est un pointeur vers la classe parente de Implémentation ?).

    Tu n'as aucun moyen d'utiliser la méthode parentWidget() au lieu de mettre toi même ton parent ? (ptêtre que ton Implementation n'hérite pas une classe fille de QWidget ?!)

    Si jamais tu galères trop, tu peux utiliser QDesktopWidget (documentation de QDesktopWidget), tu auras ainsi facilement les dimensions d'écrans, le nombre d'écrans, et il te suffira de faire move() (documentation de move()) pour placer ton file dialog là où tu en as envie.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 248
    Par défaut
    Salut,

    parent est le l'objet QMainWindow de mon application.

    Je ne crois pas que move peut fonctionner avec un QFileDialog parce que getSaveFileName(...) fais un reset sur la position du dialog.
    J'ai essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     QRect rect = QApplication::desktop()->availableGeometry(this->Implementation->Parent);
     dialog.move(rect.center() - dialog.rect().center());

  4. #4
    Membre expérimenté Avatar de MacPro
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 367
    Par défaut
    parent est le l'objet QMainWindow de mon application.
    Euh, pourquoi t'utilises pas centralWidget() de QMainWindow ? (documentation de QMainWindow::centralWidget())

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 248
    Par défaut
    Désolé parent n'est pas l'objet QMainWindow. Je travail sur un gros logiciel 3D que je n'ai surement pas codé !

    voici comment ils définissent leur MainWindow:

    MainWindow.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
     
    /// Provides the main window for the ParaView application
    class MainWindow :
      public QMainWindow
    {
      Q_OBJECT
     
    public:
      MainWindow();
      ~MainWindow();
     
       .......
     
    private:
      class pqImplementation;
      pqImplementation* const Implementation;
     
     ..........
    MainWindow.cxx :
    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
     
    class MainWindow::pqImplementation
    {
    public:
      pqImplementation(QWidget* parent) :
        AssistantClient(0),
        Core(parent),
        RecentFilesMenu(0),
        ViewMenu(0),
        ToolbarsMenu(0)
      {
      }
     
      ~pqImplementation()
      {
        delete this->ViewMenu;
        delete this->ToolbarsMenu;
        if(this->AssistantClient)
          {
          this->AssistantClient->closeAssistant();
          delete this->AssistantClient;
          }
      }
     
      QPointer<QAssistantClient> AssistantClient;
    	Ui::MainWindow UI;
      pqMainWindowCore Core;
      pqRecentFilesMenu* RecentFilesMenu;
      pqViewMenu* ViewMenu;
      pqViewMenu* ToolbarsMenu;
      QLineEdit* CurrentTimeWidget;
      QSpinBox* CurrentTimeIndexWidget;
      QPointer<pqServer> ActiveServer;
      QString DocumentationDir;
    };
     
     
     
    //////////////////////////////////////////////////////////////////////////////
    // MainWindow
     
    MainWindow::MainWindow() :
      Implementation(new pqImplementation(this))  
    {
      this->Implementation->UI.setupUi(this);
       ..........
    tous que je sais c'est que parent représente le MainWindow, mais comment : aucune idée !

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    this->Implementation->Parent
    pourquoi pas tout simplement this??

  7. #7
    Membre chevronné

    Inscrit en
    Octobre 2007
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 234
    Par défaut
    C'est une fonction statique, utilise là comme çà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QString file = QFileDialog::getSaveFileName(this->Implementation->Parent, "Save Server State:", QString(), filters);
    Je ne sais pas si ça résout ton problème, sinon this->Implementation->Parent c'est quel type de widget ?

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 248
    Par défaut
    Citation Envoyé par kinji1 Voir le message
    C'est une fonction statique, utilise là comme çà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QString file = QFileDialog::getSaveFileName(this->Implementation->Parent, "Save Server State:", QString(), filters);
    Je ne sais pas si ça résout ton problème, sinon this->Implementation->Parent c'est quel type de widget ?
    J'ai dejà essayé, ca ne fonctionne pas

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 248
    Par défaut
    En utilisant getExistingDirectory avec les même paramètre, le dialog est bien centré !

  10. #10
    Membre chevronné

    Inscrit en
    Octobre 2007
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 234
    Par défaut
    Etonnant ! Chez moi, en 4.4 ça s'affiche centré. J'essaierai sous windows avec d'autres versions de Qt.

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

Discussions similaires

  1. [CR9] Centrer verticalement le texte
    Par CDRIK dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 22/05/2009, 19h33
  2. [JTable] Centrer
    Par Mister Nono dans le forum Composants
    Réponses: 5
    Dernier message: 28/04/2004, 20h25
  3. Centrer une feuille sur l'ecran ...
    Par Djedjeridoo dans le forum Composants VCL
    Réponses: 3
    Dernier message: 18/06/2003, 14h11
  4. Comment centrer un Texte dans un rectangle ...
    Par Djedjeridoo dans le forum Composants VCL
    Réponses: 3
    Dernier message: 16/06/2003, 21h56
  5. Centrer un texte dans un string Grid
    Par christine dans le forum C++Builder
    Réponses: 5
    Dernier message: 22/10/2002, 22h33

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