我正在尝试通过QClipboard获取剪贴板数据。这是我的代码:
void MainWindow::getText()
{
QClipboard *clipboard = QGuiApplication::clipboard();
const QMimeData *mime = clipboard->mimeData (QClipboard::Selection);
QString originalText = clipboard->text(); // no crashes in windows
//QString originalText = mime->text (); //this line causing program crash
.................
}
getText()
使用QTimer每5秒调用一次。上面的代码在linux中完美运行,当我尝试在Windows 7中运行代码时崩溃了。
答案 0 :(得分:2)
clipboard->mimeData
可以为null,因此您可能希望缓存先前的状态,或执行以下操作:
QString originalText = mime ? mime->text() : QString();
答案 1 :(得分:0)
Windows不支持QClipboard::Selection
,这就是应用程序每次崩溃的原因。这是我解决它的方式
QString originalText;
if(QSysInfo::productType() == "windows") {
QString clipboard = QApplication::clipboard()->text();
originalText = clipboard;
} else {
// for linux
QClipboard *clipboard = QGuiApplication::clipboard();
const QMimeData *mime = clipboard->mimeData (QClipboard::Selection);
originalText = mime->text ();
}