Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme Qt4

...eh oui encore ^^ mais c'est pas le meme :P

    28 mai 2008 à 18:25:22

    ReBonjour :D ,
    eh oui j'ai encore un probleme ^^
    j'ai un code une fonction qui devrait placer des balises HTML dans mon QTextEdit, mais ca ne marche pas o_O
    voici mon code:

    void Fenetre::colorDialog(bool checked)
    {
        if(checked==true)
        {
            QColor rgbValue=QColorDialog::getColor(Qt::white, this);
            int ri=rgbValue.red();
            int gi=rgbValue.green();
            int bi=rgbValue.blue();
            QString r;
            r.setNum(ri);
            QString g;
            g.setNum(gi);
            QString b;
            b.setNum(bi);
            text->insertHtml("<span style='color:rgb("+r+","+g+","+b+");'>");
        }
        else
        {
            text->insertHtml("</span>");
        }
    }
    


    la fenetre de couleurs ouvre, l'utilisateur choisit une couleur normalement... ensuite je sauve mon fichier
    (code:
    void Fenetre::saveDialog()
    {
        QString path = QFileDialog::getSaveFileName(this, "Save...", QString(), "SFT File (*.sft)");
        if(path!=NULL)
        {
            QFile file(path);
            bool tryT=file.open(QIODevice::WriteOnly | QIODevice::Text);
            bool fl=file.flush();
            QString txtToInsert = text->toHtml();
            QByteArray ba = txtToInsert.toLatin1();
            qint64 n=file.write(ba);
        }
    }
    

    )
    ensuite, j'ouvre mon fichier grace a Bloc-Notes et je ne vois pas mon code...mais seulement le code par defaut insere par Qt... Qu'est ce qui ne va pas :( ?

    [EDIT]: text est le QTextEdit ^^
    • Partager sur Facebook
    • Partager sur Twitter
      28 mai 2008 à 19:46:28

      pourquoi tu récupères des valeurs dont tu ne te sers pas ? (bool fl et qint64 n)

      sinon c'est pas :
      if(path!=NULL)
      

      mais :
      if(path!="")
      // ou
      if(path!=QString())
      // ou
      if(!path.isEmpty())
      
      • Partager sur Facebook
      • Partager sur Twitter
        28 mai 2008 à 20:05:58

        J'utiliserais ces valeurs plus tard, pour voir si l'enregistrement a reussi etc. Merci de m'aider, mais j'ai remplace if(path!=NULL) avec if(!path.isEmpty()) et rien n'a change :'(
        • Partager sur Facebook
        • Partager sur Twitter
          28 mai 2008 à 20:48:36

          isEmpty() veux dire si la chaine est vide.
          donc !isEmpty() veux dire si la chaine n'est pas vide.
          Peut-être que sa va pas pour toi :p .
          • Partager sur Facebook
          • Partager sur Twitter
            29 mai 2008 à 7:03:57

            si si ca va...
            si path n'est pas vide(donc l'utilisateur a choisi le chemin d'enregistrement), on sauvegarde le fichier...mais le probleme n'est pas la sauvegarde on dirait...

            EDIT:J'ai presque trouve comment faire... maintenant l'utilisateur appuie sur le bouton, la fenetre s'ouvre, il choisit la couleur, le programme insere le code, il ecrit, le texte ecrit est colore :) MAIS il appuie encore une fois sur le bouton, la balise ferme(je l'ai vu dans la sauvegarde), il continu d'ecrire, une nouvelle balise avec la meme couleur apparait jusqu'a ce qu'il choisisse une nouvelle couleur.... :p
            Merci de m'aider
            Voici mon nouveau code:
            void Fenetre::colorDialog(bool checked)
            {
                if(checked==true)
                {
                    QColor rgbValue=QColorDialog::getColor(Qt::white, this);
                    int ri;
                    int gi;
                    int bi;
                    rgbValue.getRgb(&ri,&gi,&bi);
                    QString r;
                    r.setNum(ri);
                    QString g;
                    g.setNum(gi);
                    QString b;
                    b.setNum(bi);
                    text->setHtml(text->toHtml()+"<p style='color:rgb("+r+","+g+","+b+");'>");
                    text->moveCursor(QTextCursor::End,QTextCursor::MoveAnchor);
                }
                else
                {
                    text->setHtml(text->toHtml()+"</p>");
                    text->moveCursor(QTextCursor::End,QTextCursor::MoveAnchor);
                }
            }
            

            de plus,j'ai le meme probleme avec le bouton 'bold'...en plus je n'ai pas pu inserer <strong> mais seulement <p style='font-weight:bold;'> et comme Qt insere un saut a la ligne automatiquement avant <p>, bold et color ne peuvent pas etre actives sur le meme texte :colere2:o_O
            (code bold
            void Fenetre::bold(bool checked)
            {
                if(checked==true)
                {
                    text->setHtml(text->toHtml()+"<p style='font-weight:bold;'>");
                    text->moveCursor(QTextCursor::End,QTextCursor::MoveAnchor);
                }
                else
                {
                    text->setHtml(text->toHtml()+"</p>");
                    text->moveCursor(QTextCursor::End,QTextCursor::MoveAnchor);
                }
            }
            

            )
            Merci de m'aider :)




            TOUT RESOLU...SAUF(il y a toujours un sauf :p )
            eh ben....le slot QTextEdit::setFontUnderline(bool underline) ne marche pas :'( si ce probleme peut etre resolu, svp aidez moi :D
            • Partager sur Facebook
            • Partager sur Twitter
              30 mai 2008 à 12:01:14

              Personne ne sait pourquoi setFontUnderline ne marche pas? :'(
              mon code est
              QAction *toolUnderline=toolBar->addAction("Underline");
              toolUnderline->setCheckable(true);
              QObject::connect(toolUnderline, SIGNAL(togggled(bool)), text, SLOT(setFontUnderline(bool)));
              

              ca ne marche pas, alors que Italic marche avec exactement la meme methode o_O
              merci de m'aider :D
              • Partager sur Facebook
              • Partager sur Twitter
                1 juin 2008 à 15:20:01

                montre nous ton signal : togggled
                • Partager sur Facebook
                • Partager sur Twitter
                :)
                  1 juin 2008 à 16:04:48

                  merci bcp moii c'etait ca le probleme :S
                  eh oh au suivant! :p
                  Un nouveau probleme...
                  QFontComboBox *toolFont = new QFontComboBox;
                  toolBar->addWidget(toolFont);
                  QObject::connect(toolFont, SIGNAL(currentFontChanged(QFont)), text, SLOT(setCurrentFont(QFont)));
                  

                  ne marche pas :colere2:
                  QObject::connect(toolFont, SIGNAL(currentFontChanged(QFont)), text, SLOT(setFontFamily(QString(QFont.family()))));
                  

                  non plus :-°
                  merci de m'aider a nouveau :p
                  • Partager sur Facebook
                  • Partager sur Twitter
                    1 juin 2008 à 16:09:49

                    dans :

                    QObject::connect(toolFont, SIGNAL(currentFontChanged(QFont)), text, SLOT(setFontFamily(QString(QFont.family()))));
                    


                    ton SLOT est invalide; rappelle toi que tu ne peux mettre que des TYPEs (int, bool, QFont, etc) dans un signal/slot, pas d'attributs. :)
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Altarapp.com - Applications, Code Snippets, API Wrappers et etc, le tout en C# le plus clair du temps!
                      1 juin 2008 à 16:15:22

                      QObject::connect(toolFont, SIGNAL(currentText(QString)), text, SLOT(setFontFamily(QString)));
                      ne marche pas non plus :'( merci quand meme :)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        1 juin 2008 à 17:01:17

                        shamanas > un peu plus de recherche t'aurais donné :
                        void QTextEdit::setCurrentFont ( const QFont & f )
                        

                        et donc suffisait de faire :
                        QObject::connect(toolFont, SIGNAL(currentFontChanged(QFont)), text, SLOT(setCurrentFont(QFont)));

                        ;)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          1 juin 2008 à 17:19:49

                          Citation : Shamanas


                          Un nouveau probleme...

                          QFontComboBox *toolFont = new QFontComboBox;
                          toolBar->addWidget(toolFont);
                          QObject::connect(toolFont, SIGNAL(currentFontChanged(QFont)), text, SLOT(setCurrentFont(QFont)));
                          


                          ne marche pas :colere2:


                          :-°
                          • Partager sur Facebook
                          • Partager sur Twitter
                            1 juin 2008 à 17:56:13

                            Citation : shamanas

                            :-°


                            oups... mais ça marche :-° (sauf que ça change la police du texte sélectionné, enfin c'est même plus compliqué que ça)

                            edit :
                            tu devrais essayé en créant un slot perso et dedans tu utilises QWidget::setFont
                            • Partager sur Facebook
                            • Partager sur Twitter
                              1 juin 2008 à 20:04:50

                              ca marche mais tout le texte change de police, alors que je veux faire comme un editeur de text... (en faite, mon programme est un editeur de texte :p ) :(
                              • Partager sur Facebook
                              • Partager sur Twitter
                                1 juin 2008 à 20:07:48

                                relis mon message précédent, utilises setCurrentFont(), il marche comme n'importe quel éditeur de texte, il modifie la police du texte sélectionné (et si on continue à taper le texte, la police "reste")
                                • Partager sur Facebook
                                • Partager sur Twitter

                                Probleme Qt4

                                × 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.
                                • Editeur
                                • Markdown