Partage
  • Partager sur Facebook
  • Partager sur Twitter

Petites Questions

CodeBlocks avec QT

    9 juillet 2008 à 22:28:12

    Bonjour,Bonsoir, je suis dans la partie 2 du cours et j'essaie quelque chose, mais sa j'y arrive pas et j'aimerais savoir.

    Voila ma question

    Question 1 :
    Je voudrais crée une bouton cliquable qui m'ouvre une boite de texte qui aurai pour texte par exemple : étiquette.


    Mon Problème sur cette partie ses que quand je clique sur mon bouton ma fenêtre ne s'ouvre pas, il ne se passe rien.

    Code du bouton :
    bouton_open = new QPushButton("&Ouvir", this);
    bouton_open ->setFont(QFont("Microsoft Sans Serif", 8));
    bouton_open ->setGeometry(150, 560, 80, 22);
    QObject::connect(bouton_open, SIGNAL(clicked()), this, SLOT(aProposDe()));
    


    Code Boite Dialogue
    void FenPrincipale::aProposDe()
    {
        apropos = new QMessageBox::information(this, "TITRE", "CONTENU");
    }
    


    Question 2 :
    J'aimerais savoir comment je peu faire pour Sauvegarder dans un fichier différente PlainTextEdit. Bien sur ses Sauvegarder et Ouvrir


    Surtout que pour le moment je ne comprendre pas trop la lecture de la documentation même après avoir lu la section s'y rapportant.
    • Partager sur Facebook
    • Partager sur Twitter
      10 juillet 2008 à 22:35:46

      Bonjour, je n'aies toujours pas réussi a trouver comment faire pour mes 2 questions ci-dessus.

      Mais pour la question 2, voici un peu plus information


      On remplie la QPlainTextEdit, on veux la sauvegarder alors on clique sur le bouton Sauvegarde (besoin de la commande action, car j'y arrive pas), une boite de dialogue s'ouvre et me demande le nom et la destination du fichier "*.rtf", pour son enregistrement

      Je désire aussi la même chose sauf que cette fois si ses pour ouverture du fichier "*.rtf", dont son contenu ira ce loger dans ma TextBox.

      Voici le code QPlainTextEdit

      receveur = new QPlainTextEdit("", this);
          receveur -> setFixedSize(600,250);
          receveur -> move(10,200);
          receveur -> setFont(QFont("Times New Roman", 28, QFont::Bold, true));
      



      Image utilisateur
      • Partager sur Facebook
      • Partager sur Twitter
        12 juillet 2008 à 15:12:55

        up s.v.p :( j'ai besoin d'un coup de main
        • Partager sur Facebook
        • Partager sur Twitter
          12 juillet 2008 à 16:02:14

          Pour la question 1 aide-toi du TP sur le générateur de class ;) !
          • Partager sur Facebook
          • Partager sur Twitter
            12 juillet 2008 à 16:29:14

            je sais j'ai regarder je les fais mais je réussi pas sois ses mon bouton qui aies pas bon ou j'ai un lien qui se fait pas a quelque part.

            Bref, je crois que mon problème ses action de mon bouton.

            Si vous voulez et bien voici mon code de mon programme.

            main.cpp
            #include <QApplication>
            #include <QtGui>
            #include "FenPrincipale.h"
            
            int main(int argc, char *argv[])
            {
                QApplication app(argc, argv);
            
                FenPrincipale fenetre;
                fenetre.show();
            
                return app.exec();
            }
            




            FenPrincipale.cpp
            #include "FenPrincipale.h"
            
            FenPrincipale::FenPrincipale()
            {
                // Génération des widgets de la fenêtre principale
                Menu_Fichier();
                Menu_Aide();
                Fenetre_Bouton();
                TextBox();
                aProposDe();
            
                // Définition de quelques propriétés de la fenêtre
                setFixedSize(680, 630);
                setWindowIcon(QIcon("icon.bmp"));
                setWindowTitle(tr("Étiquette Printer - [Uniprix Centre-Achat]"));
            
            }
            
            void FenPrincipale::Menu_Fichier()
            {
                  QMenu *menuFichier = menuBar()->addMenu("&Fichier");
            
                    QAction *actionOpen = new QAction("&Ouvrir", this);
                    QAction *actionSave = new QAction("&Sauvegarder", this);
                    QAction *actionView = new QAction("&Apercu", this);
                    QAction *actionPrint = new QAction("&Imprimer", this);
                    QAction *actionQuitter = new QAction("&Quitter", this);
            
                    menuFichier->addAction(actionOpen);
                    menuFichier->addAction(actionSave);
                    menuFichier->addSeparator();
                    menuFichier->addAction(actionView);
                    menuFichier->addAction(actionPrint);
                    menuFichier->addSeparator();
                    menuFichier->addAction(actionQuitter);
            
                    actionOpen->setShortcut(tr("Ctrl+O"));
                    actionSave->setShortcut(tr("Ctrl+S"));
                    actionView->setShortcut(tr("Ctrl+A"));
                    actionPrint->setShortcut(tr("Ctrl+P"));
                    actionQuitter->setShortcut(tr("Ctrl+Q"));
            
                    connect(actionQuitter, SIGNAL(triggered()), qApp, SLOT(quit()));
            }
            
            void FenPrincipale::Menu_Aide()
            {
                QMenu *menuAide = menuBar()->addMenu("&?");
            
                    QAction *actionInfo = new QAction("&A propos de...", this);
                    menuAide->addAction(actionInfo);
                    connect(actionInfo, SIGNAL(triggered()), qApp, SLOT(aProposDe()));
            }
            
            void FenPrincipale::Fenetre_Bouton()
            {
                // Création des boutons
                bouton_open = new QPushButton("&Ouvir", this);
                bouton_save = new QPushButton("&Sauvegarder", this);
                bouton_print = new QPushButton("&Imprimer", this);
                bouton_exit = new QPushButton("&Quitter", this);
            
                reserver = new QLabel("L'utilisation de ce logiciel est restreint à la <strong>Pharmacie Uniprix du Centre-Achat de Mont-Joli</strong>." , this);
                logo = new QLabel(this);
            
                // Mise en forme de la Police des bouton
                bouton_open ->setFont(QFont("Microsoft Sans Serif", 8));
                bouton_save ->setFont(QFont("Microsoft Sans Serif", 8));
                bouton_print ->setFont(QFont("Microsoft Sans Serif", 8));
                bouton_exit ->setFont(QFont("Microsoft Sans Serif", 8));
            
                reserver -> setFont(QFont("Arial", 11));
                logo ->setPixmap(QPixmap("l_splashUniprix.jpg"));
            
                // Positionnement des boutons
                bouton_open ->setGeometry(150, 560, 80, 22);
                bouton_save ->setGeometry(250, 560, 80, 22);
                bouton_print ->setGeometry(350, 560, 80, 22);
                bouton_exit ->setGeometry(450, 560, 80, 22);
            
                reserver -> setGeometry(30,595,660,20);
                logo -> setGeometry(420,30,252,40);
            
                // Action des boutons
                QObject::connect(bouton_open, SIGNAL(triggered()), this, SLOT(aProposDe()));
                QObject::connect(bouton_save, SIGNAL(triggered()), this, SLOT(save_File()));
                QObject::connect(bouton_exit, SIGNAL(clicked()), qApp, SLOT(quit()));
            }
            
            void FenPrincipale::TextBox()
            {
                expediteur = new QPlainTextEdit("Marie-Noëlle & Isabelle Minville\n(Pharmacie Uniprix) 368142\n1760 Gaboury\nMont-Joli, Québec\nG5H 3S7", this);
                expediteur -> setFixedSize(400,150);
                expediteur -> move(10,35);
                expediteur -> setFont(QFont("Times New Roman", 16, QFont::Bold, true));
                expediteur -> setReadOnly(true);
            
                receveur = new QPlainTextEdit("", this);
                receveur -> setFixedSize(600,250);
                receveur -> move(10,200);
                receveur -> setFont(QFont("Times New Roman", 28, QFont::Bold, true));
            
                rma = new QPlainTextEdit("Autorisation Retour #", this);
                rma -> setFixedSize(600,60);
                rma -> move(10,465);
                rma -> setFont(QFont("Times New Roman", 28, QFont::Bold, true));
            }
            
            
            void FenPrincipale::open_File()
            {
            
            }
            
            bool FenPrincipale::save_File()
            {
            
            }
            
            void FenPrincipale::aProposDe()
            {
                QMessageBox::information(this, tr("Uniprix Étiquette Printer"),
                         tr("Logiciel permettant la création et impression d'étiquette"
                            "servant a l'envoie de marchandise.\n"
                            "Usage restraint a Uniprix Centre-Achat de Mont-Joli.\n\n"
                            "Crée par Mathieu Bélanger-Beaulieu"));
            }
            




            FenPrincipale.h
            #ifndef FENPRINCIPALE_H_INCLUDED
            #define FENPRINCIPALE_H_INCLUDED
            
                #include <QtGui>
                #include <QPushButton>
                #include <QWidget>
                #include <QDialog>
                #include <QFont>
                #include <QIcon>
                #include <QMessageBox>
                #include <QPlainTextEdit>
                #include <QPrintDialog>
            
            class FenPrincipale : public QMainWindow
            {
            	public:
            		FenPrincipale();
            
            	private:
                    void Menu_Fichier();
                    void Menu_Aide();
                    void Fenetre_Bouton();
                    void TextBox();
            
                private slots:
                    void open_File();
                    bool save_File();
                    void aProposDe();
            
                private:
                    QPlainTextEdit *expediteur;
                    QPlainTextEdit *receveur;
                    QPlainTextEdit *rma;
            
                    QPushButton *bouton_open;
                    QPushButton *bouton_save;
                    QPushButton *bouton_print;
                    QPushButton *bouton_exit;
                    QLabel *reserver;
                    QLabel *logo;
            
            };
            #endif // FENPRINCIPALE_H_INCLUDED
            

            • Partager sur Facebook
            • Partager sur Twitter
              12 juillet 2008 à 17:15:02

              Pourrais-tu fais un effort sur l'écriture, ce n'est pas très lisible.
              • Partager sur Facebook
              • Partager sur Twitter
                12 juillet 2008 à 17:22:29

                ses quoi qui as de pas lisible, moi je trouve sa très lisible que comme déjà dis autre post, j'ai toujours écris de même alors sa se change pas, de plus moi je vois pas qu'est-ce qu'il as de pas comprehensible la dedans.

                P.S : Ces un résolution mon problème de code je veux pas de mon problème de français.
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  12 juillet 2008 à 18:39:16

                  Bonjour,

                  Pour la question une, je ne suis pas sûr mais essaye d'enlever QObject devant ton connect.

                  Pour la deuxième va voir dans les exemple de Qt il y a un éditeur de texte. Et inspire toi de ce qu'ils ont fait.

                  Raphtas
                  • Partager sur Facebook
                  • Partager sur Twitter
                    12 juillet 2008 à 18:42:39

                    Pour la question 1 oui j'avais essayer en enlevant QObject::, et garde juste connect, mais sa fait rien, sais pour sa je vois pas trop ou serai erreur.

                    Si au début de mon application je met aProposDe(); quand le logiciel démarre ma messagebox s'ouvre, mais avec le bouton il se passe rien.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      12 juillet 2008 à 22:36:19

                      Bonjour,
                      Si tu veux créer ton propre signal ou slot, tu dois inclure la macro Q_OBJECT dans ta déclaration de classe, comme ça :
                      class FenPrincipale : public QMainWindow
                      {
                      	Q_OBJECT
                      
                      	public:
                      		FenPrincipale();
                      
                      	// Reste de la classe
                      

                      C'est peut-être ça qui est en cause.
                      N'oublie pas de faire un qmake pour générer le moc.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        12 juillet 2008 à 23:05:20

                        Citation : mat1554

                        ses quoi qui as de pas lisible, moi je trouve sa très lisible que comme déjà dis autre post, j'ai toujours écris de même alors sa se change pas, de plus moi je vois pas qu'est-ce qu'il as de pas comprehensible la dedans.

                        P.S : Ces un résolution mon problème de code je veux pas de mon problème de français.



                        T'as un problème d'homophone qui est assez lourd a lire, tu confonds... à peu près tout, quoi. Ça donne franchement pas envie de lire ton message.

                        Et justement, à propos de ton message, si personne ne le lit, comment veux-tu obtenir des réponses ? Faire un effort, ce qui n'est normalement pas très dur à faire (Utiliser un éditeur de texte du genre Microsoft Word par exemple) et ça améliore la lecture.

                        Et penser un peu, ça ne nuit pas ;)

                        Ne prend pas mal ce message, oui c'est un reproche, mais au moins, il a le mérite d'être valable n'importe où (Juste comme ça, envoie ton CV rempli de fautes à un employeur. Je me demande s'il va même répndre).
                        • Partager sur Facebook
                        • Partager sur Twitter
                          13 juillet 2008 à 3:46:09

                          bien ses que moi pour le homophone oui sa j'avoue j'ai jamais réussi et en français les production écrite je coulais j'ai jamais passée, mais je pensais tous même mes années.

                          De plus ces que moi ce que j'écris, je ne vois pas erreur et quand a moi avoir "ce, se", sa reste un ce tous même non ?

                          Pour l'exemple de script je vais tester voir. Merci bien, mais pourrais-je avoir un exemple pour le QFileDialog de save & open selon ma QPlainTextEdit s.v.p, car je catch pas trop anglais pour comprendre la librairire.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            13 juillet 2008 à 12:01:18

                            Tu es français ou canadien ? Ou autre lol ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              13 juillet 2008 à 14:26:28

                              Canadien, mais je vois pas le rapport, pas a cause que ta langue maternel ses le français que tes bon en français pour autant genre.

                              J'ai mit le Q_OBJECT dans mon fichier H, et j'appel bien en private slots;

                              mais après sa qu'Est ce que je dois faire de plus car sa fonctionne pas code:blocks de compile pas.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                14 juillet 2008 à 13:11:25

                                C'est public slots ;) !
                                Maintenant que tu as rajouté le Q_OBJECT tu qmake -project puis make :)
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  15 juillet 2008 à 15:04:22

                                  ah d'accord et avec codeblock sa ne le fait pas, car je trouve la manipulation moins longue lol :p

                                  En tout cas en compilation via codeblock sa fait une erreur, mais avec qmake tous est OK.
                                  ....

                                  Bon maintenant j'aurai besoin d'un coup de main pour le QSaveDialog je ne réussi pas a le faire. J'ai fais le QOpenDialog il est fonctionnel
                                  Voici sont code :
                                  QString fileName = path;
                                  
                                       if (fileName.isNull())
                                           fileName = QFileDialog::getOpenFileName(this,
                                               tr("Open File"), "", "Etiquette Printer Files (*.epf *.ep)");
                                  
                                       if (!fileName.isEmpty()) {
                                           QFile file(fileName);
                                           if (file.open(QFile::ReadOnly | QFile::Text))
                                               receveur->setPlainText(file.readAll());
                                       }
                                  


                                  Maintenant quelqu'un pourrait me donnée un coup de main pour le savedialog.

                                  Merci d'avance

                                  Edit -->

                                  En me fiant a un sujet trouvé sur le sujet, j'ai trouvé un bout de code que j'ai modifier pour mon cas. Sa fonctionner je sais pas si ses parfait mais sa fonctionne en tout cas.

                                  QString fichier = QFileDialog::getSaveFileName(this, "Enregistrer un fichier", QString(), "Etiquette Printer Files (*.epf *.ep)");
                                       if(!fichier.isEmpty())
                                       {
                                            QFile file(fichier);
                                            if(file.open(QIODevice::WriteOnly))
                                            {
                                                 QTextStream out(&file);
                                                 out << receveur->toPlainText();
                                            }
                                       }
                                  


                                  Si vous le permettez voici mes nouvelle question.
                                  Un système impression de ma fenêtre au complet avec possibilité de choisir la position impression sur la feuille. (Impression en mode Paysage). J'aimerais aussi si possible un peu d'aider pour un système aperçu avant-impression.


                                  J'ai fait ouvrir la fenêtre impression et d'aperçu, la ne je ne sais pas si sa imprime car mon imprimer a un problème, mais pour aperçu je ne peu affiche chacun de mes QPlainText, aussi j'aimerais savoir comment je peu choisi la position impression la feuille et mettre automatiquement en mode paysage.

                                  void FenPrincipale::view_File()
                                  {
                                   #ifndef QT_NO_PRINTER
                                       QPrinter printer(QPrinter::HighResolution);
                                       QPrintPreviewDialog preview(&printer, this);
                                       connect(&preview, SIGNAL(paintRequested(QPrinter *)), SLOT(printPreview(QPrinter *)));
                                       preview.exec();
                                   #endif
                                  }
                                  
                                  void FenPrincipale::printPreview(QPrinter *printer)
                                  {
                                   #ifndef QT_NO_PRINTER
                                       expediteur->print(printer);
                                       receveur->print(printer);
                                       rma->print(printer);
                                   #endif
                                  }
                                  
                                  void FenPrincipale::print_File()
                                  {
                                   #ifndef QT_NO_PRINTER
                                       QPrinter printer(QPrinter::HighResolution);
                                       QPrintDialog *dlg = new QPrintDialog(&printer, this);
                                       if (receveur->textCursor().hasSelection())
                                           dlg->addEnabledOption(QAbstractPrintDialog::PrintSelection);
                                       dlg->setWindowTitle(tr("Print Document"));
                                       if (dlg->exec() == QDialog::Accepted) {
                                           expediteur->print(&printer);
                                           receveur->print(&printer);
                                           rma->print(&printer);
                                       }
                                       delete dlg;
                                   #endif
                                  }
                                  
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    16 juillet 2008 à 15:14:20

                                    Personne ne pourrais m'expliquer, car je ne comprend pas trop les librairies, surtout que c'est en anglais.

                                    La ligne que je dois rajouter ses

                                    QPrinter::Landscape
                                    


                                    Mais je insérer comment au juste ?
                                    Dans cette partie de code chaque fois je la met sa fait une erreur de compilation.

                                    void FenPrincipale::view_File()
                                    {
                                     #ifndef QT_NO_PRINTER
                                         QPrinter printer(QPrinter::HighResolution);
                                         QPrintPreviewDialog preview(&printer, this);
                                         connect(&preview, SIGNAL(paintRequested(QPrinter *)), SLOT(printPreview(QPrinter *)));
                                         preview.exec();
                                     #endif
                                    }
                                    
                                    void FenPrincipale::printPreview(QPrinter *printer)
                                    {
                                     #ifndef QT_NO_PRINTER
                                         expediteur->print(printer);
                                         receveur->print(printer);
                                         rma->print(printer);
                                     #endif
                                    }
                                    
                                    void FenPrincipale::print_File()
                                    {
                                     #ifndef QT_NO_PRINTER
                                         QPrinter printer(QPrinter::HighResolution);
                                         QPrintDialog *dlg = new QPrintDialog(&printer, this);
                                         if (receveur->textCursor().hasSelection())
                                             dlg->addEnabledOption(QAbstractPrintDialog::PrintSelection);
                                         dlg->setWindowTitle(tr("Print Document"));
                                         if (dlg->exec() == QDialog::Accepted) {
                                             expediteur->print(&printer);
                                             receveur->print(&printer);
                                             rma->print(&printer);
                                         }
                                         delete dlg;
                                     #endif
                                    }
                                    


                                    De plus, j'aimerais bien savoir comment faire pour que dans mon apercu il affiche tous mes texte placé comme je le désire et que sa soit pareil pour mon impression
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      17 juillet 2008 à 15:24:19

                                      Bonjour, et bien voila j'ai fini par réussir mon orientation en LandScape, maintenant me a positionner mes 3 différente QPlainText sur une même page, si quelqu'un pourrait m'expliquer, car la je sais vraiment pas.

                                      Merci Bien !!
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        18 juillet 2008 à 15:40:52

                                        Bonjour, personne ne pourrait m'aider

                                        Tous ce qu'il me manque a faire.

                                        * Positionner chacun de mes QPlainText sur ma feuille a des position prédéfinie avant.
                                        * Mettre toute les marges a 3,3,3,3

                                        Si sa peu vous aider pour me faire un demo voici mes position.

                                        receveur(0,0)
                                        envoyeur(325,275)
                                        rma(325,545)
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          19 juillet 2008 à 19:11:10

                                          rebonjour et oui encore un Up, mais la est-ce qu'il a quelqu'un qui peu m'expliqué s.v.p
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            21 juillet 2008 à 0:11:16

                                            up

                                            personne peut m'expliquer en me donnant un bout de code

                                            je sais que sa doit etre une fusion de QPainter & QPrinter, mais bon j'arrive pas.
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              13 août 2008 à 22:23:25

                                              rebonjour, voila je viens d'essayer car cette partie la je catch pas grand chose faire un system impression qui imprime mes QPlainText a des position fix, mais ca ne fonctionne pas, je ne comprend pas trop pourquoi.

                                              Voilà mon code :

                                              void FenPrincipale::print_File()
                                              {
                                               #ifndef QT_NO_PRINTER
                                                   QPrinter printer(QPrinter::HighResolution);
                                                   printer.setOrientation(QPrinter::Landscape);
                                                   printer.setColorMode(QPrinter::GrayScale);
                                              
                                                   QPainter testPa; // Rajout
                                                   testPa.begin; // Rajout
                                                   testPa.drawText(10,10, expediteur); // Rajout
                                              
                                                   QPrintDialog *dlg = new QPrintDialog(&printer, this);
                                                   dlg->setWindowTitle(tr("Impression Étiquette"));
                                                   if (receveur->textCursor().hasSelection())
                                                       dlg->addEnabledOption(QAbstractPrintDialog::PrintSelection);
                                              
                                                   if (dlg->exec() == QDialog::Accepted)
                                                   {
                                                       testPa -> print(&printer); // Rajout
                                              /*
                                                       expediteur -> print(&printer);
                                                       receveur -> print(&printer);
                                                       rma -> print(&printer);
                                              */
                                                   }
                                                   delete dlg;
                                               #endif
                                              }
                                              
                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              Petites Questions

                                              × 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