qt中如何使按钮透明?

清风明月 2011-07-22 05:48:10
按钮上那个小图片,图片不是矩形的,也就是贴图后按钮上有空白区域,想要达到的效果是那空白区域透明化,不覆盖父窗口的颜色。 也就是说按钮透明,但贴的那个图不透明。
...全文
2484 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
mgrmhc 2011-10-24
  • 打赏
  • 举报
回复
谢谢各位,又在CSDN找到问题的解决办法了.
清风明月 2011-07-28
  • 打赏
  • 举报
回复
你可以试试啊,先画几条线几个图形什么的 然后画个button 看看那些线、图形会不会被挡住…………
wangqin_0919 2011-07-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 liang53524204 的回复:]

引用 6 楼 wangqin_0919 的回复:
but->setstysheet("QPushButton{border-radius:5px;border-width:0px;}");
这样也行啊,在main函数里设置也行,那样就所有的案件都是透明的了

这个我反复试过很多设置 结果还是会遮盖后面的东西……
[/Quote]
不是吧,我每次都是这么设置的,你是不是其他哪设置了啊
beyondma 2011-07-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yiyaaixuexi 的回复:]
其实我觉得还是QPushButton好~ 基本可以全权代替QLabel使用 只要disable flat属性就好

得到控件的背景色,用这个背景色对控件设置mask就可以了
[/Quote]
顶,只是记得背景色需要和图标的色彩反差大一些。
念茜 2011-07-25
  • 打赏
  • 举报
回复
其实我觉得还是QPushButton好~ 基本可以全权代替QLabel使用 只要disable flat属性就好

得到控件的背景色,用这个背景色对控件设置mask就可以了
wangqin_0919 2011-07-25
  • 打赏
  • 举报
回复
but->setstysheet("QPushButton{border-radius:5px;border-width:0px;}");
这样也行啊,在main函数里设置也行,那样就所有的案件都是透明的了
wangqin_0919 2011-07-25
  • 打赏
  • 举报
回复
你可以setStysheet呀
清风明月 2011-07-25
  • 打赏
  • 举报
回复
或者,可否用qlabel代替qpushbutton? qlabel可以响应鼠标的点击事件么?
清风明月 2011-07-25
  • 打赏
  • 举报
回复
呃…… 我的代码是这样写的
void ShowBut::initicon()
{
pin.load(":/pinYellowGreen.png");

pushIcon = new QPushButton(this);
pushIcon->setGeometry(pointfCom.x() + xMoveLen, pointfCom.y() + yMoveLen, 16,30);
pushIcon->setIcon(pin);
pushIcon->setFlat(true); //隐藏边框
//pushIcon->setAutoFillBackground(true);
pushIcon->setFocusPolicy(Qt::NoFocus); //隐藏虚框
//背景透明
pushIcon->setStyleSheet("QPushButton{background-color:rgba(255, 255, 255, 0);border-style: solid;border-width: 0px;\
border-color: rgba(255, 255, 255, 0);/*border-radius: 1px;font: bold 4px;min-width: 10em;padding: 2px;*/}");

pushIcon->show();
}
这样的话,该如何修改?
007大神啊,好几个论坛我都见到过你。
清风明月 2011-07-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yiyaaixuexi 的回复:]
其实我觉得还是QPushButton好~ 基本可以全权代替QLabel使用 只要disable flat属性就好

得到控件的背景色,用这个背景色对控件设置mask就可以了
[/Quote]
“控件的背景色” 按钮的父窗口的背景色?
网上很多都说用qlable代替……
我是新手,我无从判断用哪个好些。
网上说label可以响应鼠标点击事件,在这个问题上确是比button好些,省了很多设置……
结贴,慢慢折腾……
清风明月 2011-07-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wangqin_0919 的回复:]
but->setstysheet("QPushButton{border-radius:5px;border-width:0px;}");
这样也行啊,在main函数里设置也行,那样就所有的案件都是透明的了
[/Quote]
这个我反复试过很多设置 结果还是会遮盖后面的东西……
hotspring110 2011-07-23
  • 打赏
  • 举报
回复
对小图标的属性进行设置!
qter_wd007 2011-07-23
  • 打赏
  • 举报
回复
继承按钮,重载paintEvent,然后直接把原来按钮的paintEvent的代码复制过来,但是要在painter绘制之前把painter的透明度改一下

void ShowHideButton::paintEvent(QPaintEvent *e)
{
QStylePainter painter(this);
QStyleOptionButton option;
initStyleOption(&option);
painter.setOpacity(_buttonOpacity);
painter.drawControl(QStyle::CE_PushButton, option);
}
_buttonOpacity是透明度,范围是0到1

其他代码就是直接抄袭QPushButton的了

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧