欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

基于图形视图框架遇到的一些列有关问题

更新时间: 2014-01-05 02:44:13 责任编辑: Author_N1

 

基于图形视图框架遇到的一些列问题
我写的一个小程序,仿照Qt的例子里面的padnavigator这样一个旋转面板的效果

现在又两个问题,(1)在场景中我还嵌入式了一个自制的标题栏的窗口,使用QGraphicsProxyWidget类嵌入这个窗体,可是原本根据鼠标点击事件点击标题栏可以移动窗口却不行了,程序就死掉了,我调试了下是一个什么信号错误,原本在 QWidget体系里面是可用的,是因为在场景视图中信号传递不一样出问题了吗?有经验的能详解下吗?
(2)就是在图形视图框架中的使用布局管理器的,我因为就2个大窗体,我就用设置固定位置来布局,中间我也尝试了下QGraphicsView中的布局管理器,不过它好像都是针对QGraphicsWidget,QGraphicsItem或者是自己继承改造的类用了提示错误,我看了帮助文档是用这个QGraphicsLayoutItem去自己弄可以被布局管理器管理的对象吗? 请问这种混合的,如果窗体比较多要怎么使用布局管理,有详细介绍的例子吗?
--参考方法--
鼠标移动,应该放到mouseMoveEvent中实现,
--参考方法--
引用:
Quote: 引用:

你要移动的是主窗口吗?如果是,这么操作:

1,如果你的主窗口是QGraphicsView对象,那么通过QGraphicsProxyWidget代理对象可以获得QGraphicsView对象,应该用这个QGraphicsView对象的move函数实现整个窗体的移动。

2,如果你的QGraphicsView对象是放在另外一个widget或者什么窗口上,那么你应该获得主窗口对象的指针,然后调用主窗口对象的move函数。

另外关于你的代码“QWidget *widget=this->parentWidget();”,由于QGraphicsProxyWidget代理对象不会自动有parentWidget,除非你指定,那么该函数会返回空指针0,调用0只想的move函数程序肯定会挂掉。而且这个parentWidget函数返回的widget,根本就不是QWidget指针,而是QGraphicsWidget指针,他们两者之间是有本质区别的。

就是第一种情况,现在我该用什么办法获取QGraphicsView对象呢?


移动view的代码应该是在处理QGraphicsProxyWidget代理对象的鼠标移动事件函数中,应该是:
(this->scene()->views())[0]->move(x, y);
其中scene函数返回QGraphicsProxyWidget代理对象所在的场景,views函数返回所有正在显示该场景的view的指针序列(因为同一个scene可以同时被多个view显示),我想你应该只在一个view中显示你的scene,所以[0]表示取指向第一个显示scene的view的指针,最后move函数表示移动这个view,其中的x,y就是你想要它移动到的位置。语法上可能要再加括号,我没有实际试,你试试看。方法应该是这样的。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:44:13
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/13750/
本文WWW.DOC100.NET DOC100.NET版权所有。