首页| 论坛| 消息

标题:Qt编写导航按钮
作者:liudianwu
日期:2017-12-24 11:49
内容:

做各种各样的界面的时候,经常需要做一排按钮用于切换到对应界面,俗称导航按钮或者导航菜单,参照过各种各样的主界面导航布局,特意编写导航按钮自定义控件,结合各种情况,继承自QPushButton。已集成在QUC自定义控件中。
作品已在另外一篇帖子开源,请见http://www.qtcn.org/bbs/read-htm-tid-66098.html
/**
* 导航按钮控件 作者:feiyangqingyun(QQ:517216493) 2017-12-19
* 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 = this->width();
int height = this->height();
QRect bgRect;
if (linePosition == LinePosition_Le ..


#1 [微笑内敛 12-24 14:44]

#2 [liuchangyin 12-25 08:52]

#3 [liuchangyin 12-25 08:53]
漂亮的界面
#4 [一只小鱼 12-25 09:19]

#5 回 一只小鱼 的帖子 [liudianwu 12-25 09:41]
一只小鱼:    (2017-12-25 09:19) 
好评者留下邮箱,发本控件完整demo源码。

<< 1 2 3 >> (1/49)

回复 发表
主题 版块