Qt 试图访问剪贴板时程序崩溃
我试图通过QClipboard获取剪贴板数据。这是我的密码:Qt 试图访问剪贴板时程序崩溃,qt,qt5,Qt,Qt5,我试图通过QClipboard获取剪贴板数据。这是我的密码: void MainWindow::getText() { QClipboard *clipboard = QGuiApplication::clipboard(); const QMimeData *mime = clipboard->mimeData (QClipboard::Selection); QString originalText = clipboard->text(); // no c
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中运行代码时,它崩溃了。剪贴板->mimeData可以为空,因此您可能希望缓存以前的状态,或者执行以下操作:
QString originalText = mime ? mime->text() : QString();
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 ();
}
请注意,macOS也不支持此功能,因此在这种情况下,您的代码将失败。我想最好用这个支票。