[C++] [Qt] QFontDialog

Résolu/Fermé
Wazza6 Messages postés 180 Date d'inscription lundi 31 décembre 2007 Statut Membre Dernière intervention 21 juillet 2012 - 14 juil. 2009 à 22:28
Wazza6 Messages postés 180 Date d'inscription lundi 31 décembre 2007 Statut Membre Dernière intervention 21 juillet 2012 - 20 juil. 2009 à 12:09
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
A voir également:

4 réponses

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
16 juil. 2009 à 08:16
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
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
15 juil. 2009 à 10:01
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
Wazza6 Messages postés 180 Date d'inscription lundi 31 décembre 2007 Statut Membre Dernière intervention 21 juillet 2012 40
15 juil. 2009 à 17:42
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
Wazza6 Messages postés 180 Date d'inscription lundi 31 décembre 2007 Statut Membre Dernière intervention 21 juillet 2012 40
20 juil. 2009 à 12:09
Hehe fot bien que j'avoue que c'est vrai que tu as toujours raison ;) . Tout fonctonne... merci
0