简述
如题所示,本篇文章主要展示博主在仿照酷狗做播放器的时候,模仿酷狗导航栏及其实现的代码。
酷狗原图:
实现效果:
实现原理
酷狗的导航条是控制下面所要展示的控件的,所以我采用的是继承QPushButton来进行导航条的设置,方便以后QStackedWidget的显示。
在这里说一下酷狗导航条的各部分效果。
normal:没什么特别。
hover:字体颜色改变。
clicked:字体颜色改变并且在按钮底部添加横线
在点击了其它QPushButton后,原有按钮变为normal状态,酷狗本身还实现了横线的动画,在这里不予实现。
实现代码
//说明一下BasePushButton只是继承了QPushButton后实现了鼠标的样式改变,其它并未有什么不同,可当做QPushButton看,并且这个类没有实现横线的添加,因为在博主项目中有用到不要横线的导航条。
enum StackPushButtonStatus
{
Normal = 0,
Hover = 1,
Click = 2
};
class StackBasePushButton :public BasePushButton
{
Q_OBJECT
public:
StackBasePushButton(QWidget *parent = Q_NULLPTR);
StackBasePushButton();
void setFlag(const int is)
{
flag = is;
update();
}
protected:
void enterEvent(QEvent *event) override;
void