Voila, je suis débutant en C++
(Notez la triple décoration hein )
J'ai, suite au chapitre du cours de M@teo sur les différentes parties de la fenêtre, décidé de créer un petit éditeur de texte.
Super, j'arrive à faire une fonction pour quitter, pour effacer le document en entier d'un coup de gomme, mettre le texte en italique et le souligner, MAIS, je n'arrive pas à mettre le texte en gras.
Lorsque je clique sur le bouton "Gras", il s'enfonce comme les autres, mais le texte n'est pas mis en gras.
Je ne pense pas qu'il faille mettre le header ou le main, vu qu'il n'y a que les prototypes ou le minimum pour afficher notre fenêtre
Bref, voila, à la compilation, je n'ai pas d'erreur, juste un avertissement avec un menu vide, c'est tout.
Je répète que je débute, ça fait moins d'une semaine que je programme, mais j'ai fait tous les TP et suivi les instructions à la lettre.
Mais là, vraiment, j'ai beau chercher dans tous les sens, je ne trouve pas. D'habitude, lorsque j'ai un problème, au bout de quelques instants je trouve l'erreur et elle est presque corrigée desuite. Mais là ...
Bref, merci d'avoir pris le temps de lire ce long topic, et de m'aider si vous y répondez (sinon ).
Après SetShortcut, tu peux utiliser plutôt la fonction QObject::tr() (après je en sais pas si cela fait la même chose ). Mais ce que tu peux faire c'est regarder si tu as bien connecté le signal, afficher une boîte de message dans la fonction que t'appelles (car c'est peut-être dans cette fonction qu'il y a un problème
Je n'ai pas compris le QObject::tr(), et après avoir lu la doc, je ne comprends pas bien où le placer.
Sinon, j'ai l'impression que le SLOT n'est pas appellé, puisque le simple appel d'un message d'information (l'équivalent d'un alert(); en javascript quoi) n'est pas exécuté.
J'ai réussi à appeller le message en nommant le pointeur du slot "receveur" this, mais à ce moment-là, en exécutant le reste de la fonction (texte->setFontWeight... etc), le programme se plante (un message d'erreur blabla).
Donc la fonction n'est pas appelé...
Cela peut venir de n'importe où l'erreur. Par exemple, du fait que la fonction appelé ne se trouve pas des les public (protected, ou private ) slots
* Un pointeur vers l'objet qui émet le signal.
* Le nom du signal que l'on souhaite "intercepter". * Un pointeur vers l'objet qui contient le slot récepteur.
* Le nom du slot qui doit s'exécuter lorsque le signal se produit.
Le pointeur ici, c'est this ou texte ?
Je pense à texte puisqu'il est défini comme le principal widget.
Ce n'est pas parce que c'est le widget principale qu'il faut le mettre
En fait, le troisième paramètre indique à quelle classe il faut aller pour avoir la fonction que tu choisis (celle dans le SLOT()). Même si ta classe ne dérive pas QObject cela marche quand-même
Non, en mettant le nom de la classe (FenPrincipale), j'ai la belle erreur de compilation dite plus haut.
Si je met this, c'est la fonction setFontWeight qui plante : un beau message d'erreur
Ce qui serait pas mal, ce serait de faire dériver ta classe de quelque chose. Par exemple, comme ton nom de classe, c'est ta FenPrincipale, tu peux le faire dériver de QMainWindow, et tu n'auras plus l'obligation d'écrire à chaque fois QObject::connect mais connect tout simplement
Oui, cela veut dire qu'il y a une erreur dans la fonction texteGras(). il s'agit peut-être de la fonction ternaire.... Ce que tu peux faire c'est un truc du genre :
if(actionGras->IsChecked())
return texte->setFontWeight(QFont::Bold);
return texte->setFontWeight(QFont::Normal);
Euh ta fonction est bel et bien appelé quand tu cliques sur l'action ?
PS : Mais non, tes boites s'affichent. Je suis pas très en forme (ca doit être à cause de la rentrée )
Edit : est-ce que tu pourrais rénvoyer le contneu de test fichiers, maintenant qu'ils ont été modifié (et aussi le header stp)
#ifndef HEADER_FENPRINCIPALE
#define HEADER_FENPRINCIPALE
#include <QtGui>
class FenPrincipale : public QMainWindow
{
Q_OBJECT
public:
FenPrincipale();
public slots:
void texteGras();
private:
QAction *actionGras;
QTextEdit *texte;
//Tous les autres objets que j'ai créé
//Inutile de les copier dans le code pour surcharger
};
#endif
Je ne sais pas si cela a un rapport mais tu fais QAction *actionGras = menuEdition->addAction("&Gras"); alors que tu devrais plutôt faire actionGras = menuEdition->addAction("&Gras");, puisque actionGras est déjà déclaré (pareil pour QTextEdit)
Et qu'est-ce qu'ils disent dans le message ? Que l'application a rencontré un problème etc ?
salut!je suis aussi débutante en C++.je dois faire aussi un petit editeur de texte.je voulais tester votre programme pour voire les fonctionnalités que tu as pu developper.est ce que je peux avoir le main() du programme pour pouvoir compiler?
Merci d'avance.
PS:Bravo pour l' organisation de ton code Tombest, je ne fais pas mieux!!
L'important n'est pas de savoir maîtriser une technologie à la perfection, mais d'avoir une belle capacité d'adaptation.
[Qt] Problème éditeur de texte
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
L'important n'est pas de savoir maîtriser une technologie à la perfection, mais d'avoir une belle capacité d'adaptation.