2012-12-01 4 views
2

QPushButton 또는 QToolButton의 모양을 elementaryos의 웹 페이지 "버튼"과 같은 모양으로 사용자 정의 할 수 있습니까? 특정 QPushButton 스타일

Button images

내가 진정으로 원하는 모든

내가 또한 같은 경계를 얻을 수있는 운 해요,하지만 난 정말 작은 설명이 필요하지 않습니다 아마도 경우, 특성 이미지 위치와 그것의 측면에 텍스트입니다 제목 아래 :) StyleSheets에서만 할 수 있습니까? 아니면 QPushButton/QAbstractButton/Same 같은 것을 서브 클래스화해야합니까? 나는 이미 모든 곳을 수색했지만 어떤 그림을 그리는 것과 같은 것들 없이는 사용자 정의 수준을 찾지 못했습니다. 입니다. 정확히 이 아닙니다.

편집 : 정말 나에게 사용자 정의 버튼이 아닌 고정 된 이미지 하나, 당신은 아이콘에 흰색으로 배경을 설정할 수 있습니다

MainWindowButton(QString(title), /*opt*/QString(description), QImage(icon)); 
+0

대답은보다 구체적인 요구 사항에 따라 달라집니다. 스타일 시트와 두 개의 이미지로 이미지에서 볼 수있는 것을 정확하게 얻을 수 있습니다. "위로"이미지와 "아래로"(눌러 진) 이미지를 표시합니다. 그러나 단순히 텍스트와 아이콘 이미지를 지정하고 버튼 위젯을 예제와 같이 양식화하려는 경우보다 복잡한 솔루션, 하위 분류가 필요할 수 있습니다. 좀 더 구체적으로 질문을 편집해야합니다. –

+0

@ArnoldSpence 완료. –

답변

1

작동하는 방법에는 여러 가지가 있습니다.

QVBoxLayout과 함께 보통 QPushButton 인 솔루션을 작성하는 것이 좋습니다. 세 개를 추가 할 수 있습니다. QLabels; 하나는 제목 텍스트 용이고 다른 하나는 캡션 텍스트 용이고 다른 하나는 이미지 용입니다. 일부 CSS는 아마도 위쪽 및 아래쪽 단추의 배경 이미지를 렌더링하는 데 사용될 수 있으며, 두 개의 레이블에서 텍스트의 스타일을 지정하고 세 번째 레이블에서 텍스트의 스타일을 지정하는 데 더 많은 CSS를 사용할 수는 있지만, 다음과 같은 경우 레이블이 아래로 이동하지 않습니다. 버튼이 클릭됩니다.

최상의 솔루션은 직접적인 페인팅과 관련이 있다고 생각합니다. 하위 클래스를 QWidget으로 분류하고 paintEvent()을 재정 의하여이 작업을 수행 할 수 있습니다. 위로 상태에 대한 모든 것을 렌더링하고 아래쪽 상태에 대해 조금씩 위아래로 이동하십시오.

위로 및 아래로 상태를 QImage으로 렌더링하고 CSS를 사용하여 QPushbutton을 스타일링하여 하위 분류없이이 작업을 수행 할 수 있습니다.

이러한 접근 방식도 여러 가지가 있습니다.

+0

QPainter를 사용하여 손으로 버튼을 그렸고 유연한 MainButton (QString Title, QString Descrition, QImage 아이콘) 클래스! : D 고마워! –

1

의 트랙에서 뭔가를 얻을 수있는 솔루션을 싶습니다 아래쪽 테두리가 아이콘만큼 크고 위쪽, 왼쪽 및 오른쪽 테두리가 0 픽셀 인 테두리 이미지 스타일 시트 속성을 창의적으로 사용하는 오른쪽 모서리. 당신은 기본적으로 흰색 인 왼쪽 상단에 몇 픽셀 폭의 아이콘과 같은 사용자 정의 이미지를 확인해야합니다

http://doc.qt.digia.com/qq/qq20-qss.html#theboxmodel

텍스트는 paintEvent를 오버라이드 (override) 할 수 있습니다.

+0

죽은 링크입니다. – Volomike

+0

http://doc.qt.io/qt-4.8/stylesheet-customizing.html#box-model – cppguy