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 :

QTextEdit : rafraichissement d'une zone sélectionnée


Sujet :

Qt

  1. #1
    Invité
    Invité(e)
    Par défaut QTextEdit : rafraichissement d'une zone sélectionnée
    Bonjour,
    je dispose d'un TEditText sur ma MainWindow
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
       ui->setupUi(this);
       ui->te->setHtml("Voici un <a href='http://#'>lien</a>. Il ne mène nulle part...");
       ui->te->setFocus();
    }
    J'utilise un QPushButton pour mettre la seléction choisie en gras:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void MainWindow::on_btBOLD_clicked()
    {    QTextCursor cs = ui->te->textCursor();
        if(!cs.hasSelection()) {return;}
     
        QTextCharFormat cf = cs.charFormat();
        cf.setFontWeight(QFont::Bold);
        cs.mergeCharFormat(cf);
    // ui->te->mergeCurrentCharFormat(cf);
     
        //Déselection et replacement curseur
        cs.clearSelection();
        ui->te->setTextCursor(cs);
        ui->te->setFocus();
    }
    C'est opérationnel mais j'aurais aimé me rapprocher d'une ergonomie Libre Office.

    En LibreOffice : On sélectione la zone, on clique et dans la zone toujours sélectionnée, le résultat est affiché.

    En Qt : Mêmes actions. Le fait de sélectionner la zone modifie la couleur du texte. Après l'action du bouton, la zone est sélectionnée (en gris clair) et le texte n'est pas actualisé avec son formatage complet : le gras est bien affiché mais pas les couleurs d'origine. Pour rendre l'effet totalement visible, il faut désélectionner la zone (en cliquant par exemple dans le QTexEdit) ou par programmation. C'est ce que j'ai retenu finalement... et cela convient très bien pour l'usage dont j'ai besoin.


    Mais comme j'essaie de développer mes connaissances en Qt, par quelle approche peut-on obtenir l'ergonomie de Libre Office ?

    Mon approche "lazarusienne" m'inciterait à procéder ainsi : pour éviter le highlight, on peut facilement modifier la palette de la zone sélectionnée mais cela ne n'empêchera pas la mise en "mono-color" (en blanc par défaut) du texte au moment de la sélection.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    QPalette pa = ui->te->palette();
             pa.setColor(QPalette::Highlight, Qt::transparent); //ou autre chose (une nuance de bleu)
             ui->te->setPalette(pa)
    donc il faudrait mémoriser également la couleur de chaque caractère (groupe de caractères ?) avant d'intercepter la sélection, la mémoriser... et la "restituer" (i.e. un faux semblant de la sélection ?) après l'action du bouton. Est-ce envisageable ou existe-t-il une méthode plus simple ?

    Merci. Cordialement. Gilles
    Qt 5.3 - Win7 32 et 64.
    Dernière modification par Invité ; 29/05/2014 à 23h11.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 855
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 855
    Points : 218 551
    Points
    218 551
    Billets dans le blog
    118
    Par défaut
    Bonjour,

    J'ai une hypothèse.
    Dans votre seconde étape "Sélection", on voit que les couleurs sont perdus, car il y a sélection.
    Dans la troisième étape "Après action du bouton", en réalité, la sélection est comme avant (comme dans l'étape 2), sauf que le focus n'est plus sur le QTextEdit, donc la couleur de la sélection à changé (sélection dans élément inactif). Mais en réalité, la sélection étant toujours présente, les couleurs ne sont pas sensés revenir.
    Finalement, une désélection, permettra d'avoir toutes les couleurs que vous souhaitez. Un refocus, vous retournera à l'étape 2.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/10/2011, 09h08
  2. [Google Maps] Récupérer infos d'une zone sélectionnée par polygone
    Par Chouller dans le forum APIs Google
    Réponses: 1
    Dernier message: 24/07/2009, 14h53
  3. Réponses: 1
    Dernier message: 03/05/2007, 11h43
  4. [formulaire] Rafraichissement d'une zone de liste
    Par decour dans le forum Access
    Réponses: 2
    Dernier message: 08/10/2005, 12h39
  5. Rafraichissement d'une zone de texte
    Par chabs dans le forum MFC
    Réponses: 1
    Dernier message: 07/05/2005, 17h23

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