定制QSpinBox外观
Posted qt-ui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了定制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);
}
这里我们可以完全不用担心文字会被修改掉,因为文字是作为子控件进行绘制的。
在这里我们可以按自己的要求修改上下按钮和背景边框样式。
更多详情请浏览
以上是关于定制QSpinBox外观的主要内容,如果未能解决你的问题,请参考以下文章
在 xamarin.android 中管理屏幕旋转时的片段外观