Qt样式(QStyle)
文章平均质量分 69
友善啊,朋友
这个作者很懒,什么都没留下…
展开
-
Qt编写自定义控件:简单的方式绘制渐变进度条
代码:#ifndef MYPROGRESSBAR_H#define MYPROGRESSBAR_H#include <QProgressBar>class myProgressBar : public QProgressBar{public: myProgressBar(QWidget * parent = nullptr);protected: void paintEvent(QPaintEvent *event)override;};#endif原创 2022-04-04 17:23:22 · 2551 阅读 · 0 评论 -
QT风格(QStyle):绘制一个自定义QSlider
代码:#ifndef SLIDERSTYLE_H#define SLIDERSTYLE_H#include <QProxyStyle>class SliderStyle : public QProxyStyle{public: SliderStyle(); void drawComplexControl(ComplexControl which,const QStyleOptionComplex *option,QPainter *painter,cons..原创 2020-12-12 16:28:29 · 2153 阅读 · 0 评论 -
QT风格(QStyle):绘制一个自定义QComboBox
绘制QComboBox即把QComboBoxd组成元素绘制出来。元素如下:这三个都是子控件,可交互的,图标元素默认是PE_IndicatorArrowDown,一个下箭头。绘制设计图:过程实在没啥好说的,绘制套路和前面都一样,无非是确定好子控件/子元素位置,然后在相应位置绘制需要绘制的内容。完整代码:.h文件:#ifndef MYCOMBOBOXSTYLE_H#define MYCOMBOBOXSTYLE_H#include <QProxyStyle>原创 2020-12-06 23:44:46 · 3916 阅读 · 3 评论 -
QT风格(QStyle):绘制一个自定义QProgressBar
参考:[Qt]自定义QStyle——实现QProgressBar自定义样式参考:QStyle Progress Bar 样式设计(十七)前面已经知道了绘制控件只需要把控件的子元素/子控件绘制出来即可。一个默认的QProgressBar子元素如下:QProgressBar只有子元素没有子控件(可以与之交互的是子控件,只能展示不能交互的叫子元素)设计图:根据这个设计图,各个子元素的位置:QRect myProgressBarStyle::subElementRect(Su.原创 2020-12-06 17:00:47 · 2874 阅读 · 2 评论 -
QT风格(QStyle):绘制一个自定义QSpinBox(3)
按照之前的方法再来绘制两个QSpinBox。设计图:根据这个设计图改写子控件位置:QRect mySpinboxStyle::subControlRect(ComplexControl whichControl,const QStyleOptionComplex *option,SubControl whichSubControl,const QWidget *widget) const{ if (whichControl == CC_SpinBox) { .原创 2020-12-05 15:25:40 · 778 阅读 · 0 评论 -
QT风格(QStyle):绘制一个自定义QSpinBox(2)
按上一篇绘制自定义QSpinBox的过程,再来绘制一个QSpinBox。设计图:把按钮放上面在这之前先看一下成品:上一篇说了,绘制自定义QSpinBox实际上就是给QSpinBox中的这些原始组成元素指定好位置并绘制出来。设计这些元素的尺寸如下:即确定子控件位置的subControlRect()函数:QRect mySpinboxStyle::subControlRect(ComplexControl whichControl,const QStyleOpt..原创 2020-12-04 23:53:47 · 1258 阅读 · 1 评论 -
QT风格(QStyle):绘制一个自定义QSpinBox
参考《c++ qt4编程(第二版)》19.2章节一个QSpinBox的组成部分如下:使用QStyle绘制默认的QSpinBox就会绘制这些元素:这就是QStyle绘制的默认QSpinBox。要绘制一个 自定义的QSpinBox只需要在自定义的风格里面绘制这几个元素就行了。从drawComplexControl函数开始绘制:这里drawBronzeSpinBoxButton()函数用来绘制上下按钮,即这两个,void BronzeStyle::dr..原创 2020-12-02 23:55:17 · 1564 阅读 · 0 评论 -
QT风格(QStyle):drawComplexControl()绘制复杂控件(未完待续。。。)
drawComplexControl函数用来绘制复杂控件,复杂控件就是指有多个部分组合起来的控件void drawComplexControl(ComplexControl which,const QStyleOptionComplex *option, QPainter *painter,const QWidget *widget)QStyleOptionComplex继承自QStyleOption,保存了绘制控件的信息。根据ComplexControl的类型的不同QStyleOptionCo.原创 2020-11-26 22:58:06 · 4630 阅读 · 0 评论 -
QT风格(QStyle):使用QProxyStyle设置风格的一例
虽然我们可以直接继承 QStyle 来实现风格设置,但是这并不是一个好主意。因为 QStyle 这个类很复杂,几乎所有的函数都是纯虚函数,这要求我们必须一个个实现它们。有时候,我们并不需要自己实现所有功能,仅仅是做简单的修改。Qt 提供了一个专门的类,QProxyStyle。我们要做的就是继承 QProxyStyle,覆盖我们感兴趣的函数即可。看下面一个简单的实例:界面添加一个按钮:继承QProxyStyle,重写绘制按钮上面文字的代码#include <QProxyStyle>原创 2020-11-23 18:12:17 · 3910 阅读 · 0 评论 -
QT风格(QStyle):绘制控件风格设置--QStyleOption
QStyleOption是风格的设置类,定义了最基本的绘制控件所需的信息。绘制不同控件时,控件所使用的设置类继承QStyleOption,且OptionType值不同。如绘制按钮的风格设置类QStyleOptionButton继承QStyleOption时,Type = SO_Button表明是要绘制按钮,且添加了一些按钮才有的属性。根据QStyleOptionButton来绘制自定义按钮的一例:class PushButton : public QWidget{ Q_O..原创 2020-11-23 17:29:16 · 8383 阅读 · 0 评论 -
QStyle
一、描述QStyle 类是一个抽象基类,它封装了 GUI 的外观。样式也可以作为插件使用。Qt 的内置小部件使用 QStyle 来执行几乎所有的绘图,确保它们看起来与等效的原生小部件完全一样。下图显示了九种不同样式的 QComboBox。1.1、设置样式可以使用 QApplication::setStyle() 函数设置整个应用程序的样式。如果没有指定样式,Qt 会为用户的平台或桌面环境选择最合适的样式。也可以使用 QWidget::setStyle() 函数在单个小部件上设置样原创 2020-11-23 16:10:54 · 3165 阅读 · 0 评论