Qt 试图访问剪贴板时程序崩溃

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

我试图通过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中运行代码时,它崩溃了。

剪贴板->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也不支持此功能,因此在这种情况下,您的代码将失败。我想最好用这个支票。