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

Discussion :

Problème de copier-colle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 295
    Par défaut Problème de copier-colle
    Bonjour,

    Je cherche à faire un copie-coller depuis un QtextEdit.

    Voici ou j'en suis

    J'ai crée un SLOT sur un élément de menu via addAction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    action_copier=menufile2->addAction("Copier",this,SLOT(copier()));
    De là dans mon SLOT copier :
    j'ai testé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    bool test=QTextEdit::copyAvailable();
    QString etst2=QTextEdit::copy();
    le compilateur me retourne :
    "QTextEdit::copyAvailable()no matching function"
    "cannot call member function 'void QTextEdit::copy();"
    J'ai essayé de remplacer QTextedit::copyAvailable(); par bloctexte->copyAvailable; bloctexte étant le nom de mon objet QTextedit : même erreur

    Ou est-je merdé ?
    Merci pour votre aide
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 20
    Par défaut
    Bonjour,

    En fait, les méthodes que tu cherches à utiliser n'existent pas, d'où l'erreur de compilation. Si tu regardes la doc, copyAvailable est de type void et prends en argument un booléen. De plus, c'est un signal qui est automatiquement émis en interne par Qt lors de la sélection du texte dans le QTextEdit, mais si vraiment tu veux le réutiliser il faudra faire un emit. Enfin en aucun cas elle ne renvoie un booléen donc l'égalité avec test n'est pas possible non plus.
    Pour copy() même combat, c'est un slot de type void donc ne renvoie pas de QString.
    Je penses qu'il faut revoir ton système afin de connecter correctement ton signal directement sur ce slot copy(), à voir suivant ton besoin.

    A +

  3. #3
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 295
    Par défaut demande extension explications
    Merci pour ta répone Dwarfilo

    J'ai compris que la moitié de ce que tu m'as raconté.

    Comment concrètement utiliser ces signaux ?

    J'ai essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    addAction("couper",this,SLOT(QTextEdit::cut());
    Cela compile mais me retourne dans la console :
    Object::connect: No such slot Mycode::QtextEdit::cut()

    Mycode est mon objet contenant mon menu, mes fonction etc ...

    J'ai essayé aussi sans QTexEdit, avec bloctexte->cut() bloctexte.cut() ( bloctexte étant mon QTextEdit définit dans Mycode )

    J'ai vu un exemple du genre variable_qaction.triggered.connect mai en java ue je n'ai pas réussi à utiliser.

    J'avoue que je sèche ... pour juste faire un copie/coller ou couper/coller.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  4. #4
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    Je suppose que cette fonction que tu appelles ?
    http://qt.developpez.com/doc/4.7/qtoolbar/#addaction-4

    En fait quand on connecte des signaux et/ou des slots, il faut spécifier le pointeur de l'objet là où tu écris this et pas dans l'argument SLOT.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    addAction("couper", bloctexte, SLOT(cut());
    Comme le dit la doc de la fonction, le pointeur à fournir est l'objet qui recevra le signal, celui qui exécutera le SLOT. La partie SLOT(PROTOTYPE_DE_FONCTION) doit seulement recevoir le prototype du slot (et même chose pour SIGNAL).

  5. #5
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 295
    Par défaut utilisation de QClipBoard
    Je m'en suis sorti en abandonnant les copy et cut au profit de QClipBoard

    Je crée mes slots vers mes fonctions.

    pour copier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    QtextCursor cursor=bloctexte->textCursor(); //bloctexte : mon QTextEdit
    QClipBoard *clipboard=QApplication::clipboard();
    clipboard->setText(chaine);
    pour couper :
    même chose que pour copier avac ajout de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cursor.removeSelectedtext();
    pour coller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    QClipBoard *clipboard=QApplication::clipboard();
    QString chaine=clipboard->text();
    if (clipboard->ownsSelection())
    {
       cursor.insertHtml(chaine);
    }
    Par rapport à ça quelle est l'utilité de cut et copy, puis-je les utiliser et dans ce cas concrètement comment.

    Mon code actuel perlet le copier-coller entre applications. Par contre dans le cas de texte, le style n'est pas conservé. Comment pouvoir stocker du texte en gras par exemple dans le presse-papier afin de récuperer le stule dans une autre appli si cela est possible
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  6. #6
    Membre éprouvé
    Avatar de ymoreau
    Homme Profil pro
    Ingénieur étude et développement
    Inscrit en
    Septembre 2005
    Messages
    1 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur étude et développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 154
    Par défaut
    Le texte avec style est en fait une sorte de html dans Qt :
    http://qt.developpez.com/doc/4.7/richtext/

    Les fonctions nommées text (comme celles que tu utilises) correspondent à du texte brut, les fonctions nommées html vont gérer le texte avec style. Dans ton cas QClipboard ne semble pas proposer directement de stocker du html, il faut donc passer par la fonction plus générale setMimeData où le type QMimeData permet de gérer autant du texte simple que de l'html :
    http://qt.developpez.com/doc/4.7/qmimedata/#sethtml

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

Discussions similaires

  1. Problème copier-collé sous sql developper
    Par amraguts dans le forum Oracle
    Réponses: 0
    Dernier message: 28/03/2011, 14h40
  2. probléme de copier/coller
    Par lindette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/10/2007, 14h39
  3. Problème de Copier
    Par lulux80 dans le forum VB 6 et antérieur
    Réponses: 23
    Dernier message: 21/02/2007, 14h35
  4. [Word] Problème de copier/couper/coller suivant les versions
    Par SkYsO dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 07/12/2005, 21h11
  5. Réponses: 5
    Dernier message: 09/09/2005, 11h24

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