定制QSpinBox外觀


www.qt-ui.com 原創技術文章

我們需要自定義QSpinBox的外觀樣式,QSpinBox內有一個輸入框子控件。

qt自帶的qstyle可以通過派生的方式實現不同風格的控件外觀,但是對於一個應用程序中同一控件有不同外觀,通過派生QStyle就無法達到以上的效果了。

我們也可以通過重載PaintEvent的方式來解決不同效果的展現。

首先我們去除自帶的背景邊框。

UIGQSpinBox::UIGQSpinBox(QWidget* pParent) :
        QSpinBox(pParent),
        _controlBase(this) { _ctrlImpl = new UIGQSpinBoxImpl(this); setFrame(false); setStyleSheet(""); QPalette palette; palette.setColor(QPalette::Text, style.color); pEdit->setPalette(palette); QFont font; font.setPixelSize(style._font.fontSize); font.setFamily(style._font.fontFamily); pEdit->setFont(font); } 

這里通過QPalette可以修改SpinBox的字體和顏色,普通的QLineEdit也可以這么處理。

去掉背景之后就可以在PaintEvent中進行背景重繪了。

void UIGQSpinBox::paintEvent(QPaintEvent * evt) { _ctrlImpl->paintEvent(this, evt); }

這里我們可以完全不用擔心文字會被修改掉,因為文字是作為子控件進行繪制的。

在這里我們可以按自己的要求修改上下按鈕和背景邊框樣式。

 

 

 Qt-UI C++Python界面開發工具 UI開發工具 qt解決方案 qt開源項目

更多詳情請瀏覽

www.qt-ui.com

www.qt-ui.com.cn

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM