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

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  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.

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