学c++以来,用qt做过一些界面,个人感觉软件界面还是比较漂亮的,但是如果界面想嵌入一些漂亮的图标做按钮,利用qt本身已有的控件实现就有点困难了,当然可以通过为QPushButton类添加背景图标来实现,但是自我感觉效果不是很好,所以写了这篇博客,想实现一下用纯图片来做按钮控件,通过改变图片的观感,比如图片的形状大小,来表示按钮的选中或者未选中,同时为这图片按钮添加鼠标事件,从而模拟一个按键出来,这样的好处主要是它能为界面增色,不同的图片,形状,大小以及按钮选中和未选中所展现给用户的不同观感将大大提高界面整体的美化程度。
设计思路主要通过重载Qt的几个事件实现,
void mousePressEvent(QMouseEvent *event);
void paintEvent(QPaintEvent *event);
void enterEvent(QEvent *event);
void leaveEvent(QEvent *event);
同时还需要为图标按钮添加一个信号函数,void isclicked(),由该函数发送鼠标按下的信号,供其他类使用。
代码简要分析:
/*IconButton类的构造函数*/
IconButton::IconButton(QString iconStr1,QString iconStr2,QWidget *parent)
: QWidget(parent, Qt::FramelessWindowHint)
{
//加载图片作为程序的界面
m_Pixmap.load(iconStr1);
m_Pi