• 8361阅读
  • 3回复

[QSS使用实例]Qt中实现切换到相应页面,对应页面的按钮(QPushButton)选中的效果 [复制链接]

上一主题 下一主题
离线chinaboyone
 

只看楼主 倒序阅读 楼主  发表于: 2015-09-04
原文出自我的博客,欢迎大家访问交流 http://www.hookr.cn/implement-qt-switched-to-the-relevant-page-the-corresponding-page-button-qpushbutton-selected-results.html
正文:
标题要解释:我用Qt做了几个界面,通过单击按钮来切换不同的界面,但是切换到对应页面之后,按钮也抬起了,并没有始终按下,告诉使用者现在切换到哪个页面了。我要实现的效果就是,切换到哪个页面,哪个页面对应的按钮按下。
效果如下图,这是一张百度云客户端的按钮切换效果图,我们现在看看如何实现这种效果。

难着不会,会者不难,其实很简单。QPushButton 出了常见的点击还有一种状态,就是选中 checked;我们在代码中把QPushButton都设置为选中,并且把他们添加到一个buttongroup,就可以实现像单选按钮(QRadioButton)的单选效果,之后我们在给按钮的checked写一个样式,就可以实现这种效果了。其实对Qt了解的,我说到这应该就知道怎么做了。但还是来点具体代码吧。


代码示例

  1. /*将QPushButton添加到一个lis中,便于下一步操作*/
  2. rtdata_button_list<<m_SetPushbutton<<m_ShowPushbutton<<m_TopologyPushbutton<<m_StatisticsPushbutton
  3. <<m_CurvePushbutton<<m_PrintPushbutton<<m_StartPushbutton<<m_StopsticsPushbutton
  4. <<m_pausePushbutton;
  5. QButtonGroup *buttonGroup_rtdata = new QButtonGroup;/*新定义一个buttongroup*/
  6. for(int i=0;i<rtdata_button_list.count();i++)
  7. {/*循环将每个按钮设置为可以checked,并且加入到buttongroup中*/
  8. buttonGroup_rtdata->addButton(rtdata_button_list.at(i));
  9. rtdata_button_list.at(i)->setCheckable(true);
  10. rtdata_button_list.at(i)->setAutoExclusive(true);
  11. }
代码设置完之后实际就实现了我们要的效果了,如果想让按钮选中的样式更好看可以添加如下样式:
  1. QPushButton:checked{ /*pushbutton checked style*/
  2. background-color:#3da5fc;/*按钮选中背景为淡蓝色*/
  3. border-color:#3da5fc;
  4. padding: 15px 15px;
  5. border-radius:1px;
  6. font-size:12px;
  7. }
离线hezf

只看该作者 1楼 发表于: 2015-09-06
这几篇都挺好的,谢谢分享!
也去你博客看了下,非常不错
none
离线chinaboyone

只看该作者 2楼 发表于: 2015-09-08
回 hezf 的帖子
hezf:这几篇都挺好的,谢谢分享!
也去你博客看了下,非常不错 (2015-09-06 13:23) 

谢谢,谢谢,互相学习,互相交流
离线weima007

只看该作者 3楼 发表于: 2015-12-26
这个论坛也是我开始学习Qt的时候经常来的一个地方,这里面的程序,大部分都看过!不过只是略知如何实现的!我认为技术学习的过程,自觉还是比较有大的收货的!
快速回复
限100 字节
 
上一个 下一个