2012-12-01 49 views
2

如何定製QPushButton或QToolButton的外觀,使其看起來像是一個類似於普通世界的網頁「按鈕」?特定的QPushButton風格

Button images

我真正想要的是特徵圖像的位置和它的一側的文字,也許如果我很幸運,我還可以得到一個這樣的邊界,但我並不真的需要一點說明下面的標題:) 我可以做只與StyleSheets,或者我必須繼承QPushButton/QAbstractButton /類似的東西嗎?我已經遍地搜索,但沒有發現沒有像在固定地方繪畫的東西,這正是我想要的東西的定製水平。

編輯: 我真的想解決辦法,讓我一個自定義按鈕,而不是一個固定的形象之一,東西的

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

答案取決於更具體的要求。您可以使用樣式表和兩個圖像來完全實現圖像中看到的內容; 「上」圖像和「下」(壓下)圖像。但是,如果您只想指定文本和圖標圖像並使按鈕小部件呈現其樣式,則需要更復雜的解決方案,可能需要進行子分類。你應該編輯你的問題更具體。 –

+0

@ArnoldSpence完成了。 –

回答

1

有許多方法可能有效。

您可能首先考慮嘗試編寫一個正常的QPushButton解決方案和QVBoxLayout。您可以添加三個QLabels;一個用於標題文本,一個用於標題文本,另一個用於圖像。一些CSS可能可以用來呈現上下按鈕的背景圖像以及更多的CSS來設置兩個標籤中的文本樣式,並將圖像定位在第三個標籤上,但您會發現標籤不會在該按鈕被點擊。

我認爲最好的解決方案包括直接繪畫。您可以通過子類別QWidget和覆蓋paintEvent()來做到這一點。呈現所有狀態,並將所有內容向下或向下移動一段時間,以顯示關閉狀態。

您可以通過將上下狀態渲染到QImage並使用CSS爲它們設置QPushbutton來實現此目的。這些方法也有許多組合。

+0

我結束了使用QPainter並手工繪製按鈕,並且我在靈活的MainButton(QString Title, QString描述,QImage圖標)類! :D謝謝! –

1

軌道您可以設置背景爲白色的圖標右邊的角落裏有一些創意使用的border-image stylesheet屬性,其中底部邊框與圖標一樣高,頂部,左側和右側邊框的寬度爲0像素。你需要做的是基本上看起來像圖標與左側和頂部是白色的一對夫婦像素寬度的自定義圖像

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

文本,你可能需要做壓倒一切的paintEvent。

+0

這是一個死鏈接。 – Volomike

+0

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