QML中如何捕获某个组件MouseArea范围外的任意鼠标单击?

梦之领域 2017-09-14 03:22:34
问题:自己想实现一个自定义 ComboBox,具体的思路如下:
在 Rectangle 内点击时弹出一个系统字体列表框,在该 Rectangle 和弹出的系统字体列表框区域之外(含应用程序窗口之外的区域)点击时销毁字体列表框。怎么才能捕获这个区域之外的鼠标点击呢?望大家赐教。
...全文
1022 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
微风v5 2017-09-29
  • 打赏
  • 举报
回复
在整个外部窗体的mousePressEvent(QMouseEvent *event)事件中判断鼠标位置是否在你那个红框范围外,隐藏此弹窗
void XXXXX::mousePressEvent(QMouseEvent *event)
{
if(ui.wInfo->isVisible() == true)
{
QPoint m_dragPos = event->pos();
if((m_dragPos.x() < ui.wInfo->x())||
(m_dragPos.x() > (ui.wInfo->x() + ui.wInfo->width()))||
(m_dragPos.y() < ui.wInfo->y())||
(m_dragPos.y() > ui.wInfo->y() + ui.wInfo->height()))
{
ui.wInfo->setVisible(false);
}
}
event->accept();
}

16,230

社区成员

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

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