当前位置: 首页 > news >正文

长春seo网站排名优化wordpress地图插件

长春seo网站排名优化,wordpress地图插件,品牌建设方式有哪些?,大学网站建设课程课综QProxyStyle类中的drawPrimitive函数的作用 QProxyStyle::drawPrimitive 函数是 Qt 样式系统中最基础、最原子化的绘制函数。理解了它的作用,就掌握了 Qt 自定义样式的基石。 1.核心作用 drawPrimitive 的作用是绘制原始的、基本的图形元素,这些元素是构…

QProxyStyle类中的drawPrimitive函数的作用

QProxyStyle::drawPrimitive 函数是 Qt 样式系统中最基础、最原子化的绘制函数。理解了它的作用,就掌握了 Qt 自定义样式的基石。

1.核心作用

drawPrimitive 的作用是绘制原始的、基本的图形元素,这些元素是构建更复杂控件的基础构件

如果说:

  • drawControl 是绘制简单控件(如整个按钮)
  • drawComplexControl 是组装复合控件(如带按钮的SpinBox)

那么 drawPrimitive 就是绘制用来搭建这些控件的「砖块」,比如边框、背景、箭头、焦点框等。

void QProxyStyle::drawPrimitive(PrimitiveElement element,const QStyleOption *option,QPainter *painter,const QWidget *widget) const

2.参数详解

1. PrimitiveElement element
  • 类型QStyle::PrimitiveElement (枚举)
  • 意义指定要绘制的基础图元类型
  • 常见值
    • PE_PanelButtonCommand: 按钮的背景面板
    • PE_FrameFocusRect: 焦点虚线框
    • PE_IndicatorCheckBox: 复选框的勾选指示器(那个小方框)
    • PE_IndicatorRadioButton: 单选框的选中指示器(那个小圆点)
    • PE_ArrowDown/PE_ArrowUp/PE_ArrowLeft/PE_ArrowRight: 各种方向的箭头
    • PE_PanelLineEdit: 文本框的背景面板
    • PE_Frame: 通用框架
    • PE_IndicatorItemViewItemCheck: 列表视图中项目的复选框指示器
2. const QStyleOption *option
  • 包含绘制所需的状态和信息(矩形、调色板、状态标志等)。
3. QPainter *painter
  • 执行实际绘制操作的画笔。
4. const QWidget *widget
  • 可选的关联控件。

3.关键特点和工作原理

1. 原子性构建块

drawPrimitive 只负责绘制一个非常具体的视觉元素,而不是完整的控件。更高层的 drawControldrawComplexControl 在实现时,会多次调用 drawPrimitive 来组合出完整的控件外观。

示例:一个标准按钮的绘制过程

当系统要绘制一个 QPushButtonCE_PushButton)时,其实内部发生了类似这样的调用:

// 在某个默认的 drawControl(CE_PushButton, ...) 实现中:
{// 1. 绘制按钮背景(调用drawPrimitive)drawPrimitive(PE_PanelButtonCommand, option, painter, widget);// 2. 如果有焦点,绘制焦点框(再次调用drawPrimitive)if (option->state & State_HasFocus) {drawPrimitive(PE_FrameFocusRect, option, painter, widget);}// 3. 绘制按钮图标和文本(调用drawControl或其他方法)// ...
}
2. 高度重用性

同一个图元可以被多个不同的控件使用。例如:

  • PE_PanelLineEdit 可用于:
    • QLineEdit 的背景
    • QSpinBox 的编辑框部分
    • QComboBox 的文本显示区域
  • PE_ArrowDown 可用于:
    • QComboBox 的下拉箭头
    • QSpinBox 的向下按钮
    • QScrollBar 的向下箭头
3. 样式统一性的保障

通过集中处理基础图元的绘制,可以确保应用程序中所有使用该图元的地方保持视觉风格的高度一致。

4.实际应用示例

假设你想改变应用程序中所有按钮的圆角大小:

void MyCustomStyle::drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const
{switch (element) {case PE_PanelButtonCommand: {// 只处理按钮面板的绘制painter->save();// 设置渲染效果painter->setRenderHint(QPainter::Antialiasing);// 根据控件状态设置颜色if (!(option->state & State_Enabled)) {painter->setBrush(option->palette.brush(QPalette::Disabled, QPalette::Button));} else if (option->state & State_Sunken) {painter->setBrush(option->palette.brush(QPalette::Active, QPalette::Dark));} else {painter->setBrush(option->palette.brush(QPalette::Active, QPalette::Button));}painter->setPen(option->palette.color(QPalette::Active, QPalette::ButtonText));// 绘制圆角矩形 - 这里实现自定义的圆角QRect rect = option->rect;painter->drawRoundedRect(rect, 10, 10); // 使用10像素的圆角painter->restore();break;}case PE_FrameFocusRect: {// 自定义焦点框样式painter->save();QPen pen(Qt::red, 2, Qt::DotLine);painter->setPen(pen);painter->drawRect(option->rect.adjusted(2, 2, -2, -2));painter->restore();break;}default:// 对于其他所有图元,使用默认实现QProxyStyle::drawPrimitive(element, option, painter, widget);}
}

三个绘制函数的关系总结

用一个建筑 analogy来理解这三个函数的关系:

函数类比职责
drawPrimitive砖块、木材生产厂生产基础的建筑材料(图元)
drawControl房屋建筑队用材料建造独立的房子(简单控件)
drawComplexControl城市规划师协调多个建筑队,组装复杂的建筑群(复合控件)

调用关系drawComplexControldrawControldrawPrimitive

这种分层设计使得 Qt 的样式系统极其灵活和强大。你可以选择在任意层级进行定制:

  • 微调:只重写 drawPrimitive 来改变基础元素
  • 中度定制:重写 drawControl 来改变简单控件
  • 完全重写:重写所有三个函数来实现全新的视觉风格
http://www.dtcms.com/a/608166.html

相关文章:

  • 商城类的网站怎么做优化大连网站排名优
  • 聂教练做0网站商城建设网站的原因
  • 淄博免费建站博客网站主页代码html
  • 为什么网站需要维护潍坊网站制作公司
  • 福清市建设局官方网站可以做女的游戏视频网站
  • 开网站的是啥公司怎样做投资理财网站
  • 做的比较好的网站有哪些网站建设运营预算
  • RV1126 NO.49:Rockx-SDK的简介
  • 南宁网站建设liluokj誉重网站建设案例
  • 快速网站优化服务论坛网站开发框架angular
  • 网站模板在线演示怎么做网站地图写法
  • 桂林网站seo溧阳市城乡建设局网站
  • 手机wap网站开发与设计怎么查找网站备案主体
  • 微网站怎么做的做微信网站支付需要什么信息表
  • 有口碑的免费网站建设网站菜单素材
  • 深训网站福建建设执业资格注册中心网站
  • 【MySql】navicat连接报2013错误
  • 网站建设主要营销内客济南网站建设和网络推广哪个好
  • 网站开发创业计划书财务分析郑州工程造价信息网
  • 网站建设项目技术logo生成器免费
  • 在哪找做网站的建立网站的主机方式
  • 建筑网站图纸计算机软件开发规范1988作废
  • 网站制作 杭州wordpress apahce 静态 windows
  • 百度竞价排名又叫什么成都网站排名优化公司
  • wordpress安装和使用seo百度点击软件
  • 个人网站页脚设计免费做 爱视频网站
  • 哪里可以做公司网站备案城阳网络公司
  • 理解线性最小二乘的求解思路
  • 女生化妆品网站建设规划书试玩网站建设
  • 建设部网站在哪里看受理国家企业信息公示(全国)