2016-06-24 2 views
0

QGraphcisTextItem과 같은 클래스를 구현해야하지만 선택할 텍스트가 필요합니다.QPainter로 선택 가능한 텍스트를 그리는 방법은 무엇입니까?

그러나 내 클래스가 QGraphicsTextItem 또는 QGraphicsItem에서 내림차순으로 페인트 이벤트를 다시 구현하면 텍스트를 선택할 수있는 기능이 손실됩니다 (drawText 사용).

제 질문은 어떻게 QPainter의 drawText를 사용하여 선택 가능한 텍스트를 만들 수 있습니까?

+0

선택하고자하는 곳에 다른 색으로 텍스트 배경을 그릴 수 있습니다. QPalette에서 색상을 선택할 수 있습니다. –

+2

Btw, 질문이 이상하게 들립니다. 그림 그리기와 사용자와의 상호 작용의 차이점을 알고 있습니까? 당신의 정확한 문제는 무엇입니까? 어떤 연구를 했습니까? –

+0

차이점을 이해합니다. QGraphicsTextItem을 사용할 때 텍스트를 선택하여 복사 할 수 있습니다. 이 명명 된 setTextSelectable에 대한 특정 함수가 있습니다. 그것은 복사를위한 팝업 메뉴를 가능하게합니다. 나 자신을 구현하려는 그래픽 텍스트 항목에서 동일한 기능을 원한다. 내 항목에 다른 글꼴이 있기 때문에 QGraphcisTextItem을 사용할 수 없습니다. 이 작업을 수행하기 위해 내가 생각할 수있는 유일한 다른 방법은 텍스트 항목을 여러 개 만드는 것이지만, 그렇게하는 것이 최선의 방법이라고 생각하지 않습니다. – aarelovich

답변

0

사용자 지정 글꼴 문제는 재현 할 수 없습니다. 이는 질문에 속하는 매우 중요한 정보 비트이며 이라는 질문을 실질적으로으로 변경합니다.

addApplicationFont은 응용 프로그램 전체 글꼴 데이터베이스에 글꼴을 추가하는 정적 기능입니다. applicationFontFamilies(int id)을 사용하여 html로 사용할 패밀리의 이름을 얻으십시오.

... 
auto id = QFontDatabase::addApplicationFont(":/fonts/myfont.ttf"); 
if (if == -1) 
    return; 
auto families = QFontDatabase::applicationFontFamilies(id); 
if (families.isEmpty()) 
    return; 
auto face = families.first().toHtmlEscaped(); 
auto html = QStringLiteral("<font face=\"%1\">Hello</font>").arg(face); 
... 
+0

죄송합니다. 일단 당신이 그것을 시험해 보라고 말하면 나는 그것을 시험해 보았습니다. 그리고 그것은 효과가 있었고 되돌아 오는 것을 잊었습니다. 고맙습니다. 나는 당신이 여기에 보여준 것을 할 때까지 그것을 시도 할 생각이 없었습니다. 그리고 그것은 나의 불신앙에 효과적이었습니다. HTML 태그에는 사용할 수있는 글꼴의 일부가 매우 제한적이라고 생각했습니다. – aarelovich

+0

@aarelovich 나는 그것이 당신을 위해 일해서 다행이다 :) –

관련 문제