2015-09-30 59 views
0

我想刪除QGraphicsTextItem中的選定文本。刪除/刪除/替換QGraphicsTextItem中的選定文本

我一直在尋找所有的類,它使用 - 就像QTextCursorQTextDocument ...我無法找到任何文字刪除,除了QTextDocument從而消除一切的clear()功能...

哪有我刪除了選擇?

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

另外(因爲我需要這個自定義粘貼命令),我該如何替換選擇與現有的文本或HTML?

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

回答

1

不工作QTextCursor::removeSelectedText()

在下面的例子中,我們在一開始的文字QGraphics Text Item 1,但正如你所看到的,我們可以得到QTextDocument,也是QTextCursor該文檔,並插入一些話。

之後,我們將光標移動到下一個單詞。最後,我們選擇光標下的單詞(Text),並將其從我們的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(); 
}