在我的程序中,用户可以从任何地方复制一段文本,并将其粘贴到我的程序中。我使用简单的
以下是我如何从我的粘贴函数中访问剪贴板文本的方法:
但是如果文本是从记事本或Chrome中复制的,那么文本始终为空。Windows 7用户没有遇到任何问题。并不是所有的Windows 8用户都有这个问题,只有少数用户存在此问题。当从其他一些随机位置或程序内部进行复制时,剪贴板可以正常工作。
我尝试使用mimeData。在使用函数formats()时,只有纯文本格式可用,但文本始终为空。
从记事本/Chrome复制的文本在剪贴板查看器和其他程序中可以正常显示,并且可以粘贴到其他程序中。
复制和粘贴是我的程序中非常重要的功能,很让人沮丧的是我的用户无法从记事本或Chrome中复制和粘贴。
有什么想法吗?谢谢您的时间。 :)
编辑:我尝试了“windows”样式技术。但没有改变。这是我的当前代码,仍然不能工作:
复制的文本在剪贴板查看器中显示正常,但无论如何我的程序都无法获取它:
为什么GetClipboardData()没有捕获任何内容?再次说明,我尝试过的任何其他程序都可以粘贴复制的文本...只有我的程序不行。但如果从其他地方复制,它就可以正常工作。
QApplication::clipboard()->text();
函数,一切都按预期工作。然而,我的一些用户在尝试在Windows 8.1上复制和粘贴时遇到了问题。以下是我如何从我的粘贴函数中访问剪贴板文本的方法:
QString clipboard = QApplication::clipboard()->text();
//check if the clipboard is empty
if(QApplication::clipboard()->text().isEmpty())
return;
//do something with clipboard
但是如果文本是从记事本或Chrome中复制的,那么文本始终为空。Windows 7用户没有遇到任何问题。并不是所有的Windows 8用户都有这个问题,只有少数用户存在此问题。当从其他一些随机位置或程序内部进行复制时,剪贴板可以正常工作。
我尝试使用mimeData。在使用函数formats()时,只有纯文本格式可用,但文本始终为空。
从记事本/Chrome复制的文本在剪贴板查看器和其他程序中可以正常显示,并且可以粘贴到其他程序中。
复制和粘贴是我的程序中非常重要的功能,很让人沮丧的是我的用户无法从记事本或Chrome中复制和粘贴。
有什么想法吗?谢谢您的时间。 :)
编辑:我尝试了“windows”样式技术。但没有改变。这是我的当前代码,仍然不能工作:
QString clipboard = QApplication::clipboard()->text();
//check if the clipboard is empty
if(clipboard.isEmpty())
{
//might not actually be empty. Check using the other technique
if (IsClipboardFormatAvailable(CF_TEXT) && OpenClipboard(NULL))
{
HGLOBAL hGlobal = GetClipboardData(CF_TEXT) ;//hGlobal is NULL
if (hGlobal != NULL)//This never gets called because it is NULL
{
LPTSTR lpszData = (LPTSTR) GlobalLock(hGlobal) ;
if (lpszData != NULL)
{
clipboard.fromLocal8Bit((const char *)lpszData);
GlobalUnlock(hGlobal) ;
}
}
CloseClipboard() ;
}
if(clipboard.isEmpty())
return;
}
复制的文本在剪贴板查看器中显示正常,但无论如何我的程序都无法获取它:
![enter image description here](https://istack.dev59.com/BHl3r.webp)