应用程序关闭后Qt中剪贴板内容的可用性

时间:2019-04-26 21:31:41

标签: qt

全部

在查看Qt here的文档时,在应用程序关闭/退出后,我没有看到用于保存剪贴板内容的特殊方法。

我丢失了某些东西还是自动完成了(应用程序出口上的数据保留)?

TIA!

1 个答案:

答案 0 :(得分:0)

如果我对问题的理解正确,那么您想实现以下目标:

  1. 应用程序关闭或退出时,将内容保存到剪贴板。
  2. 如果应用程序关闭或退出并且剪贴板中存储了某些内容,则您希望此内容不消失。

我将从第二点开始,因为这很容易解释。与QClipboard关联的数据未绑定到QApplication范围。换句话说,您可以想象QClipboard只是一个允许从OS剪贴板获取数据并进行设置的API(它与QThread类似,而QThread只是一种表示实际线程的方法,但本身不是线程)。因此,如果您将通过QClipboard进行设置,那么即使该应用已关闭,也不会丢失任何数据。因此,类QClipboard的设置者仅设置数据,但不拥有管理其范围的所有权。

现在,如果您想在剪贴板中设置某些数据以防您的应用存在或关闭,则可以连接到QObject::destroyed信号,并在其处理程序中进行设置。例如,您可以执行以下操作:

QObject::connect(&app, &QObject::destroyed, []
{
    QApplication::clipboard()->setText("Something you would like to set.");
});

鉴于Qt不会以任何方式控制操作系统的剪贴板数据范围,因此不确定为什么要这样做,但是我展示了此示例,因为这是可能的。