2017-10-25 14 views
2

몇 가지 예제를 스캔 한 후이 문제를 해결할 수 없었습니다. 텍스트가 포함 된 QPlainTextEdit이있는 간단한 MainWindow를 갖는 테스트를 만들었습니다. 방아쇠를 당길 때 텍스트의 일부를 빨간색으로 표시하고 밑줄을 그어으로 지정합니다. 그러나 그것은 결코 일어나지 않습니다.QPlainTextEdit : 텍스트 일부분에 대한 다른 char 형식

내 코드

감사합니다 :은 QTextEdit 대신

+0

나는 생각하지 않는다는'QPlainTextEdit'는 서식있는 텍스트를 표시 할 수 있습니다. 대신'QTextEdit'을 사용해야합니다. –

+0

대신 QTextEdit을 사용하면 아무 것도 변경되지 않습니다. – Jazzco

+0

@Hi 저는 Frogatto입니다. QPlainTextEdit을 사용하면 가능합니다. 내 대답을 참조하십시오. – aghilpro

답변

1

) 아무것도 변경되지 않습니다 사용

void MainWindow::on_actionTest_triggered() 
{ 
    QTextCursor cur = ui.plainTextEdit->textCursor(); 
    cur.setPosition(49); 
    QTextCharFormat oldFormat = cur.charFormat(); 
    QTextCharFormat newFormat = oldFormat; 
    newFormat.setForeground(Qt::darkRed); 
    newFormat.setUnderlineColor(Qt::darkRed); 
    newFormat.setUnderlineStyle(QTextCharFormat::WaveUnderline); 
    newFormat.setFontUnderline(true); 
    cur.setCharFormat(newFormat); 
    cur.setPosition(cur.position()+11); 
    cur.setCharFormat(oldFormat); 
    ui.plainTextEdit->setTextCursor(cur); 
} 

이것은 당신의 솔루션입니다 : Underlinebackground을 설정 QTextCharFormat를 사용

.

void MainWindow::on_pushButton_clicked() 
{ 
    int begin = 30; //begin highlight 
    int end = 40;  //end highlight 

    QTextCharFormat fmt; 
    fmt.setBackground(Qt::red); // set color red 
    fmt.setUnderlineStyle(QTextCharFormat::SingleUnderline); //set underline 
    QTextCursor cursor(ui->plainTextEdit->document()); 
    cursor.setPosition(begin, QTextCursor::MoveAnchor); 
    cursor.setPosition(end, QTextCursor::KeepAnchor); 
    cursor.setCharFormat(fmt); 
} 

image

+0

정말 고마워! 선택을 표시하는 데 커서가 필요합니다. – Jazzco