2015-09-30 1 views
0

Je souhaite supprimer le texte sélectionné dans un QGraphicsTextItem.Supprimer/supprimer/remplacer le texte sélectionné dans QGraphicsTextItem

je cherche toutes les classes qu'il utilise - comme QTextCursor, QTextDocument ... Je ne peux pas trouver quoi que ce soit pour supprimer le texte, à l'exception de la fonction clear() du QTextDocument qui enlève tout ...

Comment Je supprime la sélection?

QTextCursor _cursor = textCursor(); 
    if(_cursor.hasSelection()) 
     ? 

Alternativement (puisque je besoin de cela pour une commande de pâte personnalisée), comment puis-je remplacer la sélection par un texte existant ou html?

QClipboard* _clipboard = QApplication::clipboard(); 
    const QMimeData* _mimeData = _clipboard->mimeData(); 
    if (_mimeData->hasHtml()) 
    { 
     QTextCursor _cursor = textCursor(); 
     if(_cursor.hasSelection()) 
      ? 
     _cursor.insertHtml(_mimeData->html()); 
    } 

Répondre

1

Ne fonctionne pas QTextCursor::removeSelectedText()?

Dans l'exemple suivant, nous avons au début le texte QGraphics Text Item 1, mais comme vous le verrez, nous pouvons obtenir le QTextDocument ainsi que le QTextCursor pour ce document et insérer quelques mots.

Ensuite, nous déplaçons le curseur sur le mot suivant. Enfin, nous sélectionnons le mot sous le curseur (Text) et le retirer de notre QGraphicsTextItem.

#include <QApplication> 
#include <QGraphicsScene> 
#include <QGraphicsView> 
#include <QGraphicsTextItem> 
#include <QTextCursor> 
#include <QTextDocument> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 

    QGraphicsScene scene; 
    QGraphicsView view(&scene); 

    QGraphicsTextItem* item_1 = new QGraphicsTextItem("QGraphics Text Item 1"); 
    item_1->setTextInteractionFlags(Qt::TextEditorInteraction); 

    QTextDocument* doc = item_1->document(); 

    scene.addItem(item_1); 

    QTextCursor cursor(doc); 
    cursor.beginEditBlock(); 
    cursor.insertText(" Hello "); 
    cursor.insertText(" World "); 
    cursor.endEditBlock(); 
    cursor.movePosition(QTextCursor::NextWord); 
    cursor.select(QTextCursor::WordUnderCursor); 
    cursor.removeSelectedText(); 

    view.setFixedSize(640, 480); 
    view.show(); 
    return a.exec(); 
}