2013-04-12 165 views
0

(使用Qt 4.8.4)QLineEdit的自定義框架

我想爲QLineEdit創建一個自定義框架。已在Photoshop中創建一個與我有它在三個圖像(因爲它需要在寬度伸展):

enter image description here

  1. 左側圖像
  2. 中心streetchable圖像
  3. 右側圖像

我想找到一種方法來取代QTLineEdit的外觀,同時仍然保留編輯視覺效果的外觀。這只是我期待的框架而已。

我該怎麼辦?如果我重寫paintEvent,則不會顯示任何內容,甚至不會顯示我輸入的內容,甚至不會顯示閃爍的光標。

+2

你有看過Qt樣式表嗎?似乎你可以做到這一點(http://qt-project.org/doc/qt-4.8/stylesheet-examples.html#customizing-qlineedit/http://qt-project.org/doc/qt-4.8 /stylesheet-customizing.html#the-box-model/http://qt-project.org/doc/qt-4.8/stylesheet-reference.html#border-image-prop) – Mat

+0

我會嘗試使用邊框圖片。謝謝。如果這樣做 - 我會請你在答覆中提到,以便我可以向你提供答覆。 – JasonGenX

回答

0

好的。我想我把它釘:

我設置爲我QLineEdit的對象以下樣式:

this->ui->myLineEdit->setStyleSheet("border-image: url(input_bg.png) 5 5 5 5 stretch stretch;border-width: 5px 5px 5px 5px;"); 

我使用的「5」,因爲圖像在我使用的,每一個角落的5x5切割封裝面積由於內部的漸變,它不會優雅地伸展。

這確保了當編輯控件的大小可變時,邊框將很好地工作。

0

你試過:

  • CustomLineEdit創建自己的類CustomLineEditQLineEdit繼承,
  • 負載/釋放你的圖片在構造CustomLineEdit /析構函數,
  • 重新實現paintEvent()自己,
  • paintEvent()根據需要放置所有圖片。
+0

是的,但我需要應用標準塗料行爲(減去框架)。這並不容易實現,部分複製QLineEdit的東西對於所有瘋狂的d指針Q_D實現來說有點棘手。 – JasonGenX