2014-10-28 2 views
3

QPlainTextEdit 위젯에서 커서 색상을 변경하고 싶습니다. 나는 너비를 6으로 설정할 수 있었지만 색상을 변경하고 싶습니다. 가능한가?Qt 5.3 QPlainTextEdit QTextCursor 색상 변경

QFontMetrics fm(font()); 
setCursorWidth(fm.averageCharWidth()); 
//setCursorColor is what I need. 

감사합니다.

편집 :이에서 예시하는 이미지를 포함

...

:

Initial Cursor Color

이 사람 :

enter image description here

감사합니다. 옆 스타일 시트와 캐럿 색상을 변경할 수 있습니다

enter image description here

답변

3

QTextCharFormat을 사용하여 QPlainTextEdit의 텍스트 색상을 설정할 수 있습니다. 색상을 설정하려면 QTextCharFormat::setForeground을 사용하십시오. 그런 다음 스타일 시트를 사용하여 color 속성을 사용하여 커서의 색을 변경하십시오.

QPlainTextEdit *p_textEdit = new QPlainTextEdit; 
p_textEdit->setStyleSheet("QPlainTextEdit{color: #ffff00; background-color: #303030;" 
          " selection-background-color: #606060; selection-color: #ffffff;}"); 
QTextCharFormat fmt; 
fmt.setForeground(QBrush(QColor(255,255,255))); 
p_textEdit->mergeCurrentCharFormat(fmt); 
3

편집

최종 봐 :

Edit2가

ui->plainTextEdit->setStyleSheet(
      "QPlainTextEdit" 
      "{" 
      "color: yellow;" 
      "}" 
      ); 

그러나 또 다른 문제가 모든 텍스트와이됩니다 이 색깔도. 새로운 색상을 텍스트로 설정하는 방법은 무엇입니까? 나는이 솔루션을 발견, 아마 최고의 : HTML 코드를 사용합니다 :

ui->plainTextEdit->appendHtml("<font color = \"red\"> Sample Text</font>"); 

결과 (텍스트 캐럿과 오리지널 컬러 원하는대로) :

enter image description here

이제 텍스트가 필요했다 색상을하지만, 캐럿에는 특별한 색이 있습니다. 그것은 해결책이지만, 누군가 나를 위해 캐럿 색상을 변경하지 않고 텍스트의 색상을 변경하는 더 좋은 방법을 찾을 수 있다면, 조금 더러운 것입니다, 이것을 말해주십시오.

당신은 위젯에서 유일한 주요 커서를 ​​변경할 수 있습니다

QPixmap pix("pathToPixmap"); 
QCursor cur(pix); 
ui->plainTextEdit->viewport()->setCursor(cur); 

Qt는 다음 커서를 포함하고있다 : http://qt-project.org/doc/qt-5/qt.html#CursorShape-enum

Qt는 특정 색상으로 어떤 커서를하지 않은, 당신은 당신이 픽스맵을 소유 사용해야하므로. 간단한 화살표로 다른 색상으로 이미지를 사용할 수 있습니다 (알파 채널이있는 경우 더 낫습니다)

웹에 여러 가지 커서가 있습니다.

+0

불행히도 내가 필요한 것은 아닙니다. 예를 들어 캐럿 (깜박임)을 노란색 (흰색에서)으로 변경해야합니다. 그러나 대답에 감사드립니다. – Yore

+0

@Yore 아니요 해결책을 찾았습니다. 제 대답을 편집했습니다. – Chernobyl

+0

@matsjoyce 그것은 웹에서 나온 예제 일 뿐이지 만 OP는 이것을 필요로하지 않으므로 삭제했습니다. – Chernobyl