[C++] [Qt] QFontDialog

Résolu
Wazza6 Messages postés 202 Statut Membre -  
Wazza6 Messages postés 202 Statut Membre -
Bonjour,
J'ai un problème avec la fonction QFontDialog de Qt, je ne comprends pas comment l'utiliser. Dans l'exemple de la documentation de Qt :
void MainWindow::police()
{
  bool ok;
 QFont font = QFontDialog::getFont(
                 &ok, QFont("Helvetica [Cronyx]", 10), this);
 if (ok) {
     // the user clicked OK and font is set to the font the user selected
 } else {
     // the user canceled the dialog; font is set to the initial
     // value, in this case Helvetica [Cronyx], 10
 } 
}

À aucun endroit la police d'un widget est changée, j'ai pensé ajouter la ligne:
centralWidget.setFont(font);
mais la compilation plante avec l'erreur:
C:/Users/Administrator/Documents/CC++/Qt/editor/main.cpp:24: error: insufficient contextual information to determine type

Code de la fonction de mon code:
      void MainWindow::setfont()
    {
    bool ok;
 QFont font1 = QFontDialog::getFont(&ok, QFont("Times", 12), this);

    if ( ok ) {
        // font is set to the font the user selected
        centralWidget.font(font1); //Ligne 24 : erreur
    } else {
        // the user canceled the dialog; font is set to the initial
        // value, in this case Helvetica [Cronyx], 10
    }
}

Est-ce que quelqu'un pourrait m'aider s.v.p
Configuration: Windows Vista Ultimate
Internet Explorer 8.0
Firefox 3.5
Qt 4.5
Qt Creator 1.2
Nero 7
CyberLink DVD Suite

4 réponses

  1. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    hum...
    le problème viens peut être de centralWidget.
    il faudrait mainwindow.h pour être sur.
    essai centralWidget()->setFont(font1);
    Tu devrais alors avoir une autre erreur.
    1
  2. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    Salut
    déjà as tu bien inclus <QFontDialog> ? j'ai remarqué des erreurs étrange avec Qt lorsqu'il manque des inclusions.
    Je ne sais pas si c'est une erreur de frappe, ou de recopie, mais tu appelles la méthode "font" et non "setFont". Or, "font" ne prend pas d'argument, d'où le faite qu'il râle.
    0
  3. Wazza6 Messages postés 202 Statut Membre 40
     
    Oui , j'ai déjà inclus QFontDialog et même avec setFont j'ai la même erreur. (C:/Users/Administrator/Documents/CC++/Qt/editor/main.cpp:28: error: insufficient contextual information to determine type)
    J'ai déjà vérifié les includes et "centralWidget.setFont(font1)" c'est la première chose que j'ai écrite , mais j'ai cherché et j'ai trouvé d'autres exemples qui avaient "widget.font()" donc j'ai essayé.

    Le code complet de mon main.cpp si ça peut être utile:
    #include <QtGui/QApplication>
    #include <Qstyle>
    #include <QPlastiqueStyle>
    #include <QMessageBox>
    #include <QFont>
    #include <QFontDialog>
    #include "mainwindow.h"
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainWindow w;
        QApplication::setStyle("plastique");
        w.show();
        return a.exec();
    }
          void MainWindow::setfont()
        {
        bool ok;
     QFont font1 = QFontDialog::getFont(&ok, QFont("Times", 12), this);
    
        if ( ok ) {
            // font is set to the font the user selected
            centralWidget.setFont(font1);
        } else {
            // the user canceled the dialog; font is set to the initial
            // value, in this case Helvetica [Cronyx], 10
        }
    }
    
    

    0
  4. Wazza6 Messages postés 202 Statut Membre 40
     
    Hehe fot bien que j'avoue que c'est vrai que tu as toujours raison ;) . Tout fonctonne... merci
    0