Qt+css绘制标题

news/2024/12/23 0:34:02/

        之前学过html和小程序,帮老师做项目的时候也用过vue,在想qt绘制界面是不是也可以使用css,然后查了一些资料,绘制了一个标题,准备用到智能家居的上位机上面。

        成果

         源码

        重写了paintEvent函数和TimeEvent函数,一个用于绘制标题,一个用于刷新右边的时间

        代码里面的注释比较详细

        

Widget::Widget(QWidget *parent): QWidget(parent)
{//可以通过样式表设置背景this->setAttribute(Qt::WA_StyledBackground);/*这行代码为窗口或控件设置了一个样式表,用于定义其外观样式。样式表使用CSS(层叠样式表)语法来描述界面元素的外观。background-image: url(:/image/res/head_bg.png); 设置背景图像。这里使用的资源路径可能是一个资源文件或者资源别名,指向一个图片文件。background-repeat: no-repeat; 确保背景图像不会重复。background-position: center; 设置背景图像居中显示。background-attachment: fixed; 这通常用于浏览器背景,确保背景图像固定,不随页面滚动而滚动*/this->setStyleSheet("background-image: url(:/new/prefix1/res/head_bg.png); background-repeat: no-repeat; background-position: center; background-attachment: fixed;");//定时器 1s 1s一次刷新startTimer(1000);
}
void Widget:: timeEvent(QTimerEvent *){//刷新update();
}
void Widget:: paintEvent(QPaintEvent *){QPainter painter(this);//抗锯齿、平滑图像转换和抗锯齿文本painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform | QPainter::TextAntialiasing); // 抗锯齿和使用平滑转换算法painter.setPen(QColor(255, 255, 255));QFont font = this->font();font.setPixelSize(42);painter.setFont(font);//居中painter.drawText(rect(), Qt::AlignCenter, "智能家居控制平台");QDateTime currentDateTime = QDateTime::currentDateTime();QString formattedDateTime = currentDateTime.toString("yyyy年M月d日 hh:mm:ss");//半透明的白色(alpha值为140,即70%不透明度painter.setPen(QColor(255, 255, 255, 140));font.setPixelSize(18);painter.setFont(font);//右对齐painter.drawText(rect().marginsRemoved(QMargins(10, 10, 10, 10)), Qt::AlignVCenter | Qt::AlignRight, formattedDateTime);
}

        


http://www.ppmy.cn/news/1337827.html

相关文章

Modern C++ idiom1:Copy-and-Swap

​ Copy-and-Swap(拷贝并交换)是一种 C 编程技术,用于以提供强异常安全性保证的方式实现赋值运算符(operator)。这种技术在处理资源管理(如管理动态内存或其他外部资源)时特别有用。该技巧涉及使…

这些AI写作软件让你轻松成为文坛巨擘

我们都知道写作是一件需要时间以及灵光乍现,但是灵感总有枯竭的时候,随着人工智能技术的不断发展,AI自动写作软件在国内市场上越来越受欢迎。这些软件利用先进的自然语言处理和机器学习算法,能够帮助用户快速生成高质量的文章。在…

条件判断的模式

防御式编程和卫语句 推荐的方法结构: function sample() {/* 前断言 P {这里是方法能够运行的前提} *//* 防御 {消除异常、性能、安全等问题} *//* 逻辑正文 C */ }表驱动 表驱动方法是一种编程模式(Scheme),其的核心思想是将数据…

Idea设置代理后无法clone git项目

背景 对于我们程序员来说,经常上github找项目、找资料是必不可少的,但是一些原因,我们访问的时候速度特别的慢,需要有个代理,才能正常的访问。 今天碰到个问题,使用idea工具 clone项目,速度特…

【Tomcat与网络4】Tomcat的连接器设计

目录 1 如何设计一个灵活可靠的连接器 2 主要组件介绍 在上一篇,我们介绍了Tomcat提供服务的整体结构,本文我们一起来看一下Tomcat的连接器的设计。 在前面我们提到Tomcat主要完成两个功能: 处理 Socket 连接,负责网络字节流与…

C++/MFC:在窗体Form(Dialog)中多个编辑框时,在输入时将回车解释为TAB键,将输入焦点移到下一个编辑框的方法

很多时候,为了输入方便,常用的做法,就是将回车键解释为将输入焦点移动到下一个编辑框中。就像是我的VxTerm中的快速连接输入一样: VxTerm是一个国产化替代的SSH工具,可以从本站的资源中免费下载并且免费使用&#xff…

(HAL)STM32F407ZGT6——10-4 高级定时器 PWM 输入模式实验

一、高级定时器简介 高级定时器的框图和通用定时器框图很类似,只是添加了其它的一些功能,如:重复计数器、带死区控制的互补输出通道、断路输入等。 高级定时器的时钟来自APB2, 而PCLK2 168Mhz, 我们设置PPRE2不分频, 因此高级定时器时钟 …

网络流量监控与分析:优化流量配置的必由之路

在数字化浪潮席卷全球的今天,企业的网络流量管理已不再是简单的技术问题,而是关乎企业运营效率、成本控制乃至业务连续性的关键所在。网络流量,作为信息时代的“血脉”,其畅通与否直接影响着企业的“健康”状况。因此,…