如何让 QDockwidget响应鼠标事件?

x264ge 2011-09-06 05:46:23
我在用Qt creator写一个小程序,功能是有一个主窗口,显示一些东西,然后这个主窗口上有一个QDockwidget,QDockwidget上有一具QLabel控件。我想让QDockwidget响应鼠标事件,用鼠标在这个QLabel上绘图。
可是试过几种可以想到的方法都没能实现。

我试过的方法:
1
新建继承自QDockwidget的类tudock
在tudock内写鼠标事件重载
这个方法使用过程中在界面内点击鼠标没有任何反映

2
让Dockwidget发送鼠标事件信号给响应函数
connect(dock,QMouseEvent,this,handlefuction)
但是点击的时候还是没有任何反映

3
主窗口内重载鼠标事件,在这个鼠标事件内通过窗口区域过滤出Dockwidget窗口内的事件。
void MainWindow::mouseReleaseEvent(QMouseEvent *event)
{
labelrect = ui->dockWidget->rect();
if(labelrect.contains(event->pos()))
{
QMessageBox::information(this,tr("鼠标位置"),tr("主函数发起,位置在区域内"));
}else QMessageBox::information(this,tr("鼠标位置"),tr("主函数发起,位置不在区域内"));
}

结果还是不行,由于ui->dockWidget->rect();的值是相对的,没办法表示出当前dockWidget的位置。



大家有什么好办法,帮我想一想,这个问题
...全文
487 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
念茜 2011-09-07
  • 打赏
  • 举报
回复
我晕费了半天劲看了问题
渔舟唱晚, 2011-09-07
  • 打赏
  • 举报
回复
我来回复一下
donwmufromdying 2011-09-07
  • 打赏
  • 举报
回复
好吧!我来回复一下。谢谢
x264ge 2011-09-06
  • 打赏
  • 举报
回复
结贴了,谁回复一下我好散分
x264ge 2011-09-06
  • 打赏
  • 举报
回复
自己解决了,使用的是第一种方法,当时是有一些小程序上的问题,没发现。有需要的可以到我博客上去看,有空我们整理一下教程发到博客上去!

16,213

社区成员

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

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