QT5.2中QButtonGroup相关

xyconly 2014-10-28 05:00:42
在QT5.2,VS2012下:
QButtonGroup* pBtnGroup;

m_pBtn1->SetStyleSheet1();//给Button设置样式表,鼠标左键按下时已有效果
m_pBtn2->SetStyleSheet1();
pBtnGroup = new QButtonGroup(this);
pBtnGroup->setExclusive(true);//设为互斥
pBtnGroup->addButton(m_pBtn1);
pBtnGroup->setId(m_pBtn1, 0);
pBtnGroup->addButton(m_pBtn2);
pBtnGroup->setId(m_pBtn2, 1);


void A::keyPressEvent(QKeyEvent *pEvent)
{
switch ( pEvent->key() ){
case Qt::Key_Up:
emit pBtnGroup->buttonPressed( curidx-1 );//能响应相关connect,却没有改变样式
pBtnGroup->button( curidx+1 )->setDown(true);//能改变样式,却不为互斥
break;
}
return QScrollArea::keyPressEvent(pEvent);
}

请问:在设计中发现,已将QButtonGroup设为互斥组,当手动操作时可正确执行;当仅对其子Button发出Pressed或者Clicked信号时(由代码执行而非手动点击)均无法改变其样式表中设置的样子,但可以响应连接对应Button的Pressed信号槽,如何解决?
...全文
580 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyconly 2014-10-29
  • 打赏
  • 举报
回复
引用 2 楼 Inhibitory 的回复:
不是很明白,但是QSS里可以根据状态修改使用不同的效果,如 QPushButton:pressed { background: red; } QPushButton:checked { background: blue; } Qt自带的帮助文档里有QSS的完整帮助说明。
已可以实现,只需要设置为pBtnGroup->button( curidx+1 )->setChecked(true)即可,而非pressed或者clicked信号;顺带问下,两个窗口(:public QWidget)已设置连接connect,1窗口发出信号,2窗口响应槽函数,2窗口创建QMessageBox,结束后1窗口按键事件不响应(pEvent->type() == QEvent::KeyPress)可能是什么原因造成的? 注:但是对MouseButtonPress,MouseButtonRelease,FocusOut,FocusIn等事件均可以响应.
Inhibitory 2014-10-28
  • 打赏
  • 举报
回复
不是很明白,但是QSS里可以根据状态修改使用不同的效果,如 QPushButton:pressed { background: red; } QPushButton:checked { background: blue; } Qt自带的帮助文档里有QSS的完整帮助说明。
xyconly 2014-10-28
  • 打赏
  • 举报
回复
求高手救援~~

16,211

社区成员

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

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