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