首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组合框中的QIcon

组合框中的QIcon
EN

Stack Overflow用户
提问于 2010-03-06 02:26:31
回答 2查看 1.4K关注 0票数 1

我想在我的QComboBox条目中包含一个“删除”图标,但是我在捕捉鼠标按下事件时遇到了麻烦。我尝试在组合框中捕获它,并尝试重新实现QIcon类来捕获那里的鼠标按下。没有骰子。有人知道怎么做吗?

-D

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-07 02:09:19

我写的代码有点像这样,我想把一个树视图放在一个组合框中,并且我需要在树上的复选框被单击时执行一个操作。我最终做的是在组合框上安装一个事件过滤器来拦截鼠标点击,找出鼠标点击发生的位置,然后采取行动。也许你可以用你的图标做同样的事情。代码如下:

代码语言:javascript
复制
bool TreeComboBox::eventFilter(QObject* object, QEvent* event)
{
  if (event->type() == QEvent::MouseButtonPress || event->type() == QEvent::MouseButtonRelease)
  {
    QMouseEvent* m = static_cast<QMouseEvent*>(event); 
    QModelIndex index = view()->indexAt(m->pos());
    QRect vrect = view()->visualRect(index);

    if(event->type() == QEvent::MouseButtonPress  && 
      (model()->flags(index) & Qt::ItemIsUserCheckable) &&
      vrect.contains(m->pos()))
    {
// Your action here
      ToggleItem(index);
      UpdateSelectionString(); 
    }
    if (view()->rect().contains(m->pos()))
      skipNextHide = true;
  }
  return QComboBox::eventFilter(object, event);
}
票数 0
EN

Stack Overflow用户

发布于 2010-04-09 22:56:56

也许您可以重新实现QComboBox::mousePressEvent(QMouseEvent *e),并结合使用e.x()QComboBox::iconSize()来查找事件是否发生在图标上。

如果Qt样式决定切换组合框中的标签和图标位置,这将导致中断。不知道这是不是可能?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2389013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档