定制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