2011-03-25 1 views
3

거기! QTextEdit에서 현재 행 형식을 변경하는 방법을 찾고 싶습니다. 제가선택하지 않고 QTextEdit에서 현재 줄 형식을 변경하는 방법?

는 "포맷은 현재 텍스트 상기 setCharFormat()를 사용하여 문서 mergeCharFormat() setBlockFormat() 및 mergeBlockFormat() 함수에 적용 할 수있는 판독 문서

. 만약 커서에 선택이 없습니다. 현재 블록 형식이 변경됩니다. "

그러나 내 응용 프로그램에서 현재 커서가있는 블록을 변경할 수 없습니다. 뭔가 놓칠까요? 그러면 선택이없는 현재 블록 형식을 어떻게 바꿀 수 있습니까?

QTextCursor cursor = this->textCursor(); 
QTextBlockFormat blockFmt; 
blockFmt.setNonBreakableLines(true); 
blockFmt.setPageBreakPolicy(QTextFormat::PageBreak_AlwaysBefore); 
QTextCharFormat charFmt; 
charFmt.setFont(data->visualFont()); 
if(!cursor.hasSelection()) { 
    cursor.beginEditBlock(); 
    cursor.setBlockFormat(blockFmt); 
    cursor.mergeBlockCharFormat(charFmt); 
    QTextBlock block = cursor.block(); 
    block.setUserData(data); 
    cursor.endEditBlock(); 
} 

는 내가하고 싶은 : 어떤 선택이없는 경우, 현재의 행의 형식을 변경

여기 내 코드입니다. 따라서 cursor.hasSelection()이 false 인 경우, 새로운 형식을 병합하여 문자를 차단합니다. 그러나 이것은 효과가 없습니다.

또한 setTextCorsor (cursor)를 추가하려고했습니다. cursor.endEditBlock();을 수행 한 후에도 여전히 작동하지 않습니다. 실제로이 값을 추가하면 전체 블록이 보이지 않게됩니다.

그래서 선택이없는 현재 블록 형식을 어떻게 바꿀 수 있습니까?

답변

5

Pls, 아래 예제가 효과가 있는지 확인하십시오. 현재 텍스트 블록 형식 및 글꼴을 변경해야합니다. 이 도움이

QTextCursor cursor(myTextEdit->textCursor()); 

// change block format (will set the yellow background) 
QTextBlockFormat blockFormat = cursor.blockFormat(); 
blockFormat.setBackground(QColor("yellow")); 
blockFormat.setNonBreakableLines(true); 
blockFormat.setPageBreakPolicy(QTextFormat::PageBreak_AlwaysBefore); 
cursor.setBlockFormat(blockFormat); 

// change font for current block's fragments 
for (QTextBlock::iterator it = cursor.block().begin(); !(it.atEnd()); ++it) 
{ 
    QTextCharFormat charFormat = it.fragment().charFormat(); 
    charFormat.setFont(QFont("Times", 15, QFont::Bold)); 

    QTextCursor tempCursor = cursor; 
    tempCursor.setPosition(it.fragment().position()); 
    tempCursor.setPosition(it.fragment().position() + it.fragment().length(), QTextCursor::KeepAnchor); 
    tempCursor.setCharFormat(charFormat); 
} 

희망,

+0

감사에 관하여! 나는 그것이 잘 작동 할거라 생각한다! 귀하의 코드를 가져 주셔서 감사합니다! – devbean

+0

또한 QSyntaxHighlighter 클래스 (http://doc.qt.nokia.com/latest/qsyntaxhighlighter.html)를보고 싶을 수도 있습니다. –