【问题标题】:Qt Drag'n'Drop application window(s) – similar to browser tabsQt拖放应用程序窗口(是) - 类似于浏览器选项卡
【发布时间】:2015-09-21 20:22:54
【问题描述】:

手头的任务是实现一个拖放处理程序,它允许拖动一个元素

  • 窗口之间
  • 窗外

所需的行为类似于浏览器标签:通过将标签从一个浏览器窗口拉到另一个浏览器窗口,标签可以在窗口之间移动。将选项卡拉出窗口会创建一个新的浏览器窗口,并打开该选项卡。

我想在我的程序中复制这个。

我看到了几种手动实现这一点的可能性,但是有没有一些简单的方法可以使用 Qt 中包含的电池来实现这一点?

【问题讨论】:

  • 我安装的所有浏览器都没有为此使用 D+D。简单的鼠标捕获,在鼠标移动通知上移动一个窗口。
  • @HansPassant:这也是我实现它的方式。我只是想知道我是否可以为此劫持 QDrag(它必须完成所有繁重的工作,即为像素图创建一个窗口、鼠标捕获等等……)。哦,好吧,我的下午就过去了。

标签: qt drag-and-drop


【解决方案1】:

afaik 没有这样的“单线”来获得这种行为。

一种方法是您的应用程序在剪贴板中存储有关选项卡所需的所有信息,并知道如何解释这些信息以创建新选项卡(在第二个实例中)。

另一种方法是(当我想到 firefox 时,但我不知道他们如何处理它)使用共享内存并在您的实例之间共享此指针(但我不知道这是否被认为是“安全的”)

干杯

【讨论】:

  • 浏览器通常会为窗口共享一个单一的实例进程,所以实际上IPC不需要这样做。就我而言,无论如何,事情都仅限于所讨论的特定过程,因此也无需摆弄 IPC 机制。我只是好奇我是否可以搭载已经为 QDrag 实现的现有鼠标捕获和像素图拖动窗口。
猜你喜欢
  • 1970-01-01
  • 2020-06-01
  • 2012-03-14
  • 1970-01-01
  • 2013-07-04
  • 1970-01-01
  • 2018-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多