尝试访问剪贴板时程序崩溃

时间:2016-12-27 06:39:23

标签: qt qt5

我正在尝试通过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中运行代码时崩溃了。

2 个答案:

答案 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 ();
    }