저는 QLabel
이고, 입니다. 그 안에 텍스트 을 새겨 넣으려면을 새겨 넣으십시오. CSS의 텍스트 그림자 접근 방식과 비슷합니다. Qt에서이 작업을 수행 할 수있는 방법이 있습니까?새겨진 효과로 텍스트를 만들려면 어떻게해야합니까?
1
A
답변
0
이 작업은 하위 클래스에서 레이블의 paint 이벤트를 재정 의하여 수행 할 수 있습니다. 예 :
#include <QRect>
#include <QLabel>
#include <QPainter>
class QEngravedLabel : public QLabel
{
public:
explicit QEngravedLabel(QWidget *parent=0, Qt::WindowFlags f=0)
: QLabel(parent, f){};
explicit QEngravedLabel(const QString &text, QWidget *parent=0, Qt::WindowFlags f=0)
: QLabel(text,parent,f){};
protected:
virtual void paintEvent(QPaintEvent *pe) override
{
QRect toPaint(pe->rect());
QPainter painter(this);
toPaint.translate(0,1);
painter.setPen(QColor("#CCC")); // light shadow on bottom
painter.drawText(toPaint, this->alignment() ,this->text());
toPaint.translate(0,-2);
painter.setPen(QColor("#333")); // dark shadow on top
painter.drawText(toPaint, this->alignment() ,this->text());
toPaint.translate(0,1);
painter.setPen(QColor("#000000")); // text
painter.drawText(toPaint, this->alignment() ,this->text());
}
};
이 그림자 색상은 밝은 회색 배경에 맞춰져 있습니다.
2
paintEvent
을 오버라이드하는 것보다 훨씬 쉽고 QGraphicsEffect 인 QGraphicsDropShadowEffect을 사용하고 있습니다.
QGraphicsDropShadowEffect* effect = new QGraphicsDropShadowEffect();
effect->setBlurRadius(5);
effect->setXOffset(5);
effect->setYOffset(5);
label->setGraphicsEffect(effect);
은 그 결과는 다음과 같이이다 :
당신은 당신이 쉽게 QGraphicsDropShadowEffect::setColor 멤버 함수를 통해이를 달성 할 수있는 그림자 색상을 원하는 경우
.희망이 도움이됩니다.
관련 문제
- 1. 텍스트를 왼쪽 맞춤으로 만들려면 어떻게해야합니까?
- 2. 간편한 효과로 수직 드롭 다운 메뉴를 만들려면 어떻게해야합니까?
- 3. 알림 표시 줄에 텍스트를 만들려면 어떻게해야합니까?
- 4. HTML에서 텍스트를 반응 적으로 만들려면 어떻게해야합니까?
- 5. TextView의 텍스트를 두 가지 크기로 만들려면 어떻게해야합니까?
- 6. jQuery를 사용하여 텍스트를 링크로 만들려면 어떻게해야합니까?
- 7. 텍스트 상자 텍스트를 하이퍼 링크로 만들려면 어떻게해야합니까?
- 8. 레이아웃 XML에서 TextView의 텍스트를 unclickable로 만들려면 어떻게해야합니까?
- 9. 선택 옵션의 내부 텍스트를 대문자로 만들려면 어떻게해야합니까?
- 10. appcelerator titanium - 버튼 텍스트를 소문자로 만들려면 어떻게해야합니까?
- 11. 텍스트를 캔버스에서 부드럽게 움직이는 텍스트로 만들려면 어떻게해야합니까?
- 12. 레일 가로장이 새겨진 PDF 헤더
- 13. 이름이 새겨진 레일 2
- 14. 원에 새겨진 문자 그리기
- 15. 슬라이드 효과를 페이드 효과로 변경하려면 어떻게해야합니까? 코드가
- 16. SLTextField를 tappable로 만들려면 어떻게해야합니까?
- 17. 맞춤 이벤트를 만들려면 어떻게해야합니까?
- 18. 동적 CSS 여백을 만들려면 어떻게해야합니까?
- 19. 내 양식 디자이너를 만들려면 어떻게해야합니까?
- 20. XHTML - 텍스트를 공백없이 새 줄이나 줄 바꿈으로 만들려면 어떻게해야합니까?
- 21. TextField 스크롤에서 텍스트를 만들려면 어떻게해야합니까? (HTML의 천막과 같은)
- 22. Jbutton 내부의 텍스트를 변경 한 후에 업데이트하는 변수로 만들려면 어떻게해야합니까?
- 23. 스크립트 패널에서 파이어 랩 줄 바꾸기 텍스트를 만들려면 어떻게해야합니까?
- 24. 동일한 div 형식의 표 형식으로 아이콘과 텍스트를 만들려면 어떻게해야합니까?
- 25. CSS를 사용하여 새겨진 테두리 만들기
- 26. 지문이 새겨진 Chrome 작업 영역
- 27. CSS 텍스트 조각 된 또는 새겨진 효과
- 28. 파이썬에서 정규 표현식을 만들려면 어떻게해야합니까?
- 29. UIImageView에서 큰 이미지를 만들려면 어떻게해야합니까?
- 30. Adobe Flex : <mx:text>의 텍스트를 클릭 효과로 변경하십시오.
그림자는 내가 묻고있는 것보다 완전히 다른 것을하는 훨씬 쉬운 방법입니다. 그림자 효과는 텍스트가 페이지 위에 떠있는 것처럼 보이게합니다. 새겨진 효과는 텍스트를 페이지로 가라 앉혀 보이므로이 방법은 질문에 대답하지 않습니다. –
미안 해요, 당신은'text-shadow' 효과를 요구했습니다. 나는'새겨진 '것이 무엇인지 잘 모르겠습니다 ... –