近日舍得在开发SuperMemo转换精灵体验版的时候遇到了一个问题,舍得需要左侧一个竖排的工具栏,工具栏中的按钮点下后高亮为蓝色,而且点击后一直保持这种高亮状态.直到另一个按钮按下,把它替换掉为止,就象下面这个效果:
在实际使用的时候发现了问题:当鼠标在主窗口的其它位置点击的时候,这个蓝色高亮状态就消失了,舍得尝试了很多种方法,什么信号槽啊,事件啊啥的,一直找不到一个妥善的解决方案,这几乎已经成为舍得心头的一根刺了。
直到今天,在度娘的帮助下,找到了一篇文章《Qt保持状态的Button》,直觉告诉我这个可以解决,马上动手测试,终于把这根刺给干掉了。
下面是解决的方案:
在按钮中应用下面的函数:
self.scriptBtn.setCheckable(True) self.scriptBtn.setAutoExclusive(True)
像舍得上面这幅图中总共5个按钮,需要一一设置。
然后在QSS样式表中设置:
QPushButton::checked,QToolButton::checked{
background: #3C79F2;
border-color: #11505C;
font-weight: bold;
font-family:"Microsoft YaHei";
}