首页| 论坛| 消息

标题:Qt开源作品14-导航按钮控件
作者:liudianwu
日期:2020-05-19 09:02
内容:

## 一、前言
导航按钮控件,主要用于各种漂亮精美的导航条,我们经常在web中看到导航条都非常精美,都是html+css+js实现的,还自带动画过度效果,Qt提供的qss其实也是无敌的,支持基本上所有的CSS2属性,配合QPainter这个无敌大法工具,没有什么不能绘制的。这个控件总结了大部分的导航条样式,比如左侧+右侧+顶部+底部,线条指示器,倒三角指示器等。还可以在导航条前面加上图标等,就显得更加有特色。有了此控件,再也不用担心没有精美的导航了。总之这个控件在我的很多的项目中都在用,而且很多Qt界的朋友也在用,反响很热烈很好。
主要功能:
1. 可设置文字的左侧+右侧+顶部+底部间隔
2. 可设置文字对齐方式
3. 可设置显示倒三角/倒三角边长/倒三角位置/倒三角颜色
4. 可设置显示图标/图标间隔/图标尺寸/正常状态图标/悬停状态图标/选中状态图标
5. 可设置显示边框线条/线条宽度/线条间隔/线条位置/线条颜色
6. 可设置正常背景颜色/悬停背景颜色/选中背景颜色
7. 可设置正常文字颜色/悬停文字颜色/选中文字颜色
8. 可设置背景颜色为画刷颜色
## 二、代码思路
```c++
void NavButton::paintEvent(QPaintEvent *)
{
//绘制准备工作,启用反锯齿
QPainter painter(this);
painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);
//绘制背景
drawBg(&painter);
//绘制文字
drawText(&painter);
//绘制图标
drawIcon(&painter);
//绘制边框线条
drawLine(&painter);
//绘制倒三角
drawTriangle(&painter);
}
void NavButton::drawBg(QPainter *painter)
{
painter->save();
painter->setPen(Qt::NoPen);
int width = this->width();
int height = this->height();
QRect bgRect;
if (linePosition == LinePosition_Left) {
bgRect = QRect(lineS ..


#1 [niangu 05-19 21:03]
侠,写过毫秒级定时器吗,1毫秒,我start(1),但是基本3毫秒才响应一次
#2 回 niangu 的帖子 [liudianwu 05-20 08:42]
niangu:侠,写过毫秒级定时器吗,1毫秒,我start(1),但是基本3毫秒才响应一次
 (2020-05-19 21:03) 
还好吧,我这基本上要15毫秒左右呢
#3 [niangu 05-27 01:55]
侠啊,那可能你还不够强,我用的qt的modbus开发的电机调试程序,可以实现5毫秒读取几十个寄存器然后使用qtcharts绘制成八条曲线还不能满足别人的需求,只能采用传统串口来搞然后封装成modbus类似的接口,他是要求1毫秒读取20次数据画4条曲线,另4条每毫秒读取一次画曲线,后来他要辞职了,而我在忙另一个项目就顾不上给他写了,所以也没有测试传统串口的速度能力

回复 发表
主题 版块