请教一个在QTreewidget的某个项中最右侧添加自定义控件的问题

abxialiang 2013-06-27 03:42:13
我想实现的效果是:
当用户选中某一项后,始终在该项的最右侧显示一个操作按钮,不论窗口大小变化不是QTreewidget滚动条移动,都要使得按钮显示在选中项的最右侧;

尝试的思路:
1.获得QTreewidget选中项的QRect,并设置按钮父对象为该QTreewidget,然后move到理想的位置,但该方法的问题是获取到的QRect是以第一项的左上角为坐标原点的,而用move移动按钮的时候却又是以QTreewidget列头的左上角为原点的,恰巧QTreewidget列头的高度是多少也不知道怎么得到,导致没有准确定位按钮位置了;
2.用QTreewidget的setItemWidget()方法,但这样无法保证在QTreewidget可视区域最右侧显示;

现在的难点是:
尝试多种我能想到的方式后仍然无法精确定位按钮,请教!

要的效果如下:

拖动滚动条会导致按钮偏移;
...全文
505 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
abxialiang 2013-06-28
  • 打赏
  • 举报
回复
引用 3 楼 Jonix 的回复:
Qt Creator的打开文件窗, 不是选中项的最右侧显示按钮. 而是在鼠标所在行上显示一个半透明浮时按钮. 你看你是不是换这样的设计? 处理应该要简单些.
在我万念俱灰的时候,我也是想这么做的,现在正在研究中; 几个问题:怎么拦截鼠标经过事件;怎么获得鼠标经过的项;如果用全局定位怎么确定坐标,如果用QTreewidget做父对象来定位又如何清除旧的项(就是之前鼠标经过的项)按钮;
Jonix 2013-06-27
  • 打赏
  • 举报
回复
Qt Creator的打开文件窗, 不是选中项的最右侧显示按钮. 而是在鼠标所在行上显示一个半透明浮时按钮. 你看你是不是换这样的设计? 处理应该要简单些.
abxialiang 2013-06-27
  • 打赏
  • 举报
回复
引用 1 楼 heksn 的回复:
setItemWidget就可以呀
我写一大堆,想必你也没有怎么看,用setItemWidget一是不能自动在最右侧显示,二是窗口大小改变或者滚动条移动时按钮也会移动
  • 打赏
  • 举报
回复
setItemWidget就可以呀

16,175

社区成员

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

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