IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Comment imprimer ?


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 22
    Par défaut Comment imprimer ?
    Bonjour, comme le dit le titre, je cherche comment imprimer en Qt.

    - Soit vous savez comment on fait et vous postez une réponse expliquant comment faire(mais ça m' étonnerais)

    - Soit vous savez (ou pas) comment on fait mais c' est BEACOUP trop long à expliquer sur un forum et vous envoyez un lien d' un tuto qui l' explique(hé oui je n' en ai pas trouvé!!)

    - Soit vous savez comment on fait mais vous ne voulez pas l'expliquer, donc vous me donnez directement le code à taper dans mon projet(ça m' étonnerais aussi)

    Si vous choisissez tout de même la dernière solution, voici mon projet(éditeur de texte):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    /*main.cpp*/
     
    #include <QApplication>
    #include <QtGui>
    #include "FenPrincipale.h"
     
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
     
        QString locale = QLocale::system().name();
        QTranslator translator;
        translator.load(QString("qt_") + locale, QLibraryInfo::location(QLibraryInfo::TranslationsPath));
        app.installTranslator(&translator);
     
        FenPrincipale fenetre;
        fenetre.show();
     
        return app.exec();
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    /*FenPrincipale.cpp*/
    #include <stdlib.h>
    #include <stdio.h>
    #include <QFile>
    #include "FenPrincipale.h"
     
    FenPrincipale::FenPrincipale()
    {
     
        QMenu *menuFichier = menuBar()->addMenu("&Fichier");
        ouvrir = new QAction("&Ouvrir...", this);
        menuFichier->addAction(ouvrir);
        enreg = new QAction("&Enregistrer sous...", this);
        menuFichier->addAction(enreg);
        enreg->setIcon(QIcon("101.png"));
        Imprimer = new QAction("&Imprimer", this);
        menuFichier->addAction(Imprimer);
        Imprimer->setIcon(QIcon("37.png"));
        QAction *actionQuitter = new QAction("&Quitter", this);
        menuFichier->addAction(actionQuitter);
        actionQuitter->setShortcut(QKeySequence("Ctrl+Q"));
        actionQuitter->setIcon(QIcon("quitter.png"));
     
     
        QMenu *menuEdition = menuBar()->addMenu("&Edition");
        choixPolice2 = new QAction("&Police...", this);
        menuEdition->addAction(choixPolice2);
     
     
        QMenu *menuAffichage = menuBar()->addMenu("&Affichage");
        QAction *afficherBE = new QAction("&Barre d' état", this);
        afficherBE->setCheckable(true);
        afficherBE->setChecked(true);
        menuAffichage->addAction(afficherBE);
     
        QToolBar *toolBarFichier = addToolBar("Fichier");
        toolBarFichier->addAction(actionQuitter);
        toolBarFichier->addAction(enreg);
     
        toolBarFichier->addSeparator();
     
        QFontComboBox *choixPolice = new QFontComboBox;
        toolBarFichier->addWidget(choixPolice);
        choixPolice->setEditable(false);
     
        QStatusBar *barreEtat = statusBar();
        barreEtat->showMessage("Prêt");
        actionQuitter->setStatusTip("Quitte le programme");
        enreg->setStatusTip("Enregistré!");
     
        QMdiArea *zoneCentrale = new QMdiArea;
     
        zoneTexte1 = new QTextEdit;
     
     
        QMdiSubWindow *sousFenetre1 = zoneCentrale->addSubWindow(zoneTexte1);
     
        zoneCentrale->setViewMode(QMdiArea::TabbedView);
     
        QObject::connect(actionQuitter, SIGNAL(triggered()), qApp, SLOT(quit()));
        QObject::connect(choixPolice2, SIGNAL(triggered()), this, SLOT(ouvrirDialogue()));
        QObject::connect(choixPolice, SIGNAL(currentFontChanged(QFont)), zoneTexte1, SLOT(setCurrentFont(QFont)));
        QObject::connect(enreg, SIGNAL(triggered()), this, SLOT(Save()));
        QObject::connect(afficherBE, SIGNAL(stateChanged(int)), barreEtat, SLOT(hide()));
        QObject::connect(ouvrir, SIGNAL(triggered()), this, SLOT(Open()));
        QObject::connect(Imprimer, SIGNAL(triggered()), zoneTexte1, SLOT(Print()));
     
     
        setCentralWidget(zoneCentrale);
     
     
     
    }
    void FenPrincipale::ouvrirDialogue()
    {
        bool ok = false;
     
        QFont police = QFontDialog::getFont(&ok, zoneTexte1->font(), this, "Choisissez une police");
     
        if (ok)
        {
            zoneTexte1->setFont(police);
        }
    }
    void FenPrincipale::Save()
    {
        QString fichier = QFileDialog::getSaveFileName(this, "Enregistrer un fichier", ".","Texte(*.txt)");
        if (fichier.isEmpty()) return;
        QFile file(fichier);
     
        if (file.open(QFile::WriteOnly | QFile::Truncate)) // si l'ouverture s'est bien passée
        {
            // permet d'écrire dans le fichier
            QTextStream out(&file);
            out << zoneTexte1->toPlainText();
            file.close();
        }
     
        else
            QMessageBox::warning(this,"Erreur","Une erreur s'est prosuite lors de l'ouverture du fichier");
     
    }
     
    void FenPrincipale::Open()
    {
        QString fichier = QFileDialog::getOpenFileName(this, "Ouvrir un fichier", QString(), "Texte (*.txt)");
     
        QFile file(fichier);
        if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
        return;
     
        zoneTexte1->setText(QString(file.readAll()));
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    /*FenPrincipale.h*/
     
    #ifndef HEADER_FENPRINCIPALE
    #define HEADER_FENPRINCIPALE
     
    #include <QtGui>
    #include <stdlib.h>
    #include <stdio.h>
    #include <fstream>
    #include <QFile>
     
     
    class FenPrincipale : public QMainWindow
    {
    	Q_OBJECT
     
    	public:
    		FenPrincipale();
     
     
        public slots:
            void ouvrirDialogue();
            void Save();
            void Open();
     
     
    	private:
        QAction *choixPolice2;
        QAction *ouvrir;
        QAction *enreg;
        QAction *Imprimer;
        QString *filename;
        QTextEdit *zoneTexte1;
     
    };
     
     
    #endif
    Voila, comme vous pouvez le voir, j'ai connecté 'Imprimer' avec 'Print' mais je n'ai pas encore crée cette fonction car j' ignore ce que je dois mettre à l'intérieur...

    Mais svp, choisissez une des 3 solutions car j'ai vraiment envie de savoir comment on imprime en Qt (ou autre)...

    En espérant des réponses...

  2. #2
    Membre chevronné

    Inscrit en
    Octobre 2007
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 234
    Par défaut
    Sans être une solution complète, cette page de la doc devrait t'aider :
    http://doc.trolltech.com/4.4/printing.html

  3. #3
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 22
    Par défaut
    oui je sais j'y suis déjà allé sur cette page mais tout le code qu'ils donnent, je le comprend, je l'ai même intégré à mon projet(en modifiant quelques trucs) , ça compile, mais ça ne fait rien!!!

    édit: où a été déplacé ce sujet svp??? je ne le trouve pas!!

  4. #4
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 22
    Par défaut
    changement de programme:

    Après revue de mon code, j'ai réussi à imprimer!!!!

    Mais(!) L'imprimante ne prends en charge que les espaces mais rien d'autre(gras, italique, souligné, saut de lignes...) !!

    Comment garder la mise en forme du texte à l'impression svp?

    Voici la fonction(pas besoin du reste(si vous en avez besoin, y' a qu' a demander))

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    void FenPrincipale::imprimerTexte()
    {
        QPrinter printer;
        QTextDocument doc;
        QString TE = zoneTexte1->toPlainText();
        doc.setHtml(TE);
     
         QPrintDialog *dialog = new QPrintDialog(&printer, this);
         dialog->setWindowTitle(tr("Print Document"));
     
         if (zoneTexte1->textCursor().hasSelection())
             dialog->addEnabledOption(QAbstractPrintDialog::PrintSelection);
     
         if (dialog->exec() == QDialog::Accepted)
             doc.print(&printer);
             return;
    }
    Voila!!

  5. #5
    Membre chevronné

    Inscrit en
    Octobre 2007
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 234
    Par défaut
    Je pense que c'est parce que tu extrait du plain text de zoneTexte1, donc tu perds les mises en formes.

  6. #6
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Effectivement, faudrait plutôt voir pour extraire en HTML.

  7. #7
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 22
    Par défaut
    ah d'accord!!!
    mais dans ce cas quelle fonction(si ça ne s'appelle pas comme ça dsl)appeler pour l'extraire en HTML ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB.NET]Comment Imprimer une form
    Par bernard06 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 19/10/2011, 17h43
  2. [CR] Comment imprimer dans le bon ordre
    Par speed034 dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 18/05/2004, 11h11
  3. [Impression] Comment imprimer un .txt?
    Par Grosgrognon dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 27/04/2004, 13h19
  4. Comment imprimer des tabulations ?
    Par Invité dans le forum C++Builder
    Réponses: 2
    Dernier message: 27/11/2002, 11h30
  5. Comment imprimer le contenu d'un TStringGrid
    Par scorpiwolf dans le forum C++Builder
    Réponses: 2
    Dernier message: 19/06/2002, 15h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo