如何让 QDockwidget响应鼠标事件?
我在用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的位置。
大家有什么好办法,帮我想一想,这个问题