您当前的位置: 首页 >  qt

令狐掌门

暂无认证

  • 3浏览

    0关注

    513博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Qt设置按钮背景图片

令狐掌门 发布时间:2020-01-01 02:32:34 ,浏览量:3

       Qt有丰富的样式表,可以很方便的改变界面的风格,下面给出Qt按钮添加图片的方法,直接用setIcon的方法,图片会被缩放,下面的方法正常显示

//设置按钮图标,按钮的默认大小是 30*30,可以自己指定
void setButtonImage(QPushButton *button, QString image)
{  
    button->setText("");
	QPixmap pixmap(image);
	QPixmap fitpixmap = pixmap.scaled(30, 30, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
	button->setIcon(QIcon(fitpixmap));
	button->setIconSize(QSize(30, 30));
	button->setFlat(true);  
	button->setStyleSheet("border: 0px"); //消除边框
}

        注意:按钮上的文本得去掉,不然图片位置会变动,image可以是qrc里的文件。

        如果公司有美工,可提供三态图片,那更方便,直接用背景图片修改,qss代码如下:

/*正常显示*/
QPushButton
{
    background-image:url(":/demo/pictures/1.png");
    border:none;
}
 
/*鼠标悬浮*/
QPushButton:hover
{
    background-image:url(":/demo/pictures/2.png");
    border:none;
}
 
/*按钮按下*/
QPushButton:pressed
{
	background-image:url(:/demo/pictures/3.png);
    border:none;
}

     如需要全局设置qss, 那么需要用#指定某个按钮,如下:

QPushButton#btnOpen:hover
{
    ...
    ...
}
  注意:图片的名字不能包含特殊字符,例如@、¥等,包含特殊字符的图片在用代码setStyleSheet设置样式时可能无效.

在用样式表时,同样要把按钮的文字去掉设为空,且按钮的固定大小设成和图片相同。

例如要实现下面的效果

 

qss代码:

QPushButton
{
	background-image:url(":/resources/user.png");
	background-position:center;
	background-repeat: no-repeat;
	border:none
}

QPushButton:hover
{
	background-color:rgb(10,210,210);
	background-image:url(":/resources/user_hover.png")
}

QPushButton:pressed
{
	background-color:rgb(10,210,210);
	background-image:url(":/resources/user.png");
	padding-left:8px;
    padding-top:8px;
}

qss可以设置很多效果,需要搭配实现。

关注
打赏
1652240117
查看更多评论
立即登录/注册

微信扫码登录

0.0489s