2016-02-25 42 views
1

在QML中,使用TextEdit項目作爲文本編輯器並在其後面運行熒光筆代碼(QSyntaxHighlighter)。當用戶輸入一個破折號( - )時,它將被熒光筆代碼識別並格式化(如Markdown)。但是,另外我希望文本在多行的時候在短劃線後面縮進。就像它與HTML列表一樣。如何在QML中的列表後面縮進多行文本TextEdit

這是怎麼看起來像現在: How it looks like right now

這是我想它(文字正確對齊破折號後面): enter image description here

我知道這是可以縮進文本:

QTextCursor cursor(currentBlock()); 
QTextBlockFormat textBlockFormat = currentBlock().blockFormat(); 
textBlockFormat.setIndent(1); 
cursor.setBlockFormat(textBlockFormat); 

一個想法是默認縮進所有的文本,並用短劃線或類似的方式取消縮進行,但還不能完全弄清楚如何實現它。

還有其他想法嗎?

回答

0

好吧,顯然還有一個列表樣式選項。這是你可以改變一個塊的風格:

QTextBlock block = textDoc->findBlockByNumber(i); 
QTextCursor cursor(block); 

cursor.beginEditBlock(); 
QTextListFormat::Style style = QTextListFormat::ListDecimal; 
QTextBlockFormat blockFmt = cursor.blockFormat(); 
QTextListFormat listFmt; 

if (cursor.currentList()) { 
    listFmt = cursor.currentList()->format(); 
} else { 
    listFmt.setIndent(blockFmt.indent() + 1); 
    blockFmt.setIndent(0); 
    cursor.setBlockFormat(blockFmt); 
} 

listFmt.setStyle(style); 

cursor.createList(listFmt); 
cursor.endEditBlock(); 

這可以鏈接到在從另外,QTextDocument或熒光筆的contentsChange信號插槽中使用。

相關問題