通过eventFilter获取QLineEdit的某些属性到剪贴板

时间:2017-05-05 13:55:33

标签: c++ qt events clipboard qlineedit

我试图创建一个QLineEdit元素,其单击时文本将自动复制到剪贴板。

我创建了以下eventFilter来捕获click事件并将其安装在适用的元素上:

bool MainWindow::eventFilter(QObject *watched, QEvent *event)
{
    if(event->type() == QEvent::MouseButtonPress)
    {
        qDebug("TEST");
        return true;
    }
    else
    {
        return false;
    }
}

从这里收集我需要从对象传递到剪贴板函数的数据的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

使用QClipboard课程。您可以使用qApp->clipboard()获取应用程序的剪贴板,然后设置QLineEdit中的文字:

bool MainWindow::eventFilter(QObject *watched, QEvent *event)
{
    if(event->type() == QEvent::MouseButtonPress)
    {
        auto watched_as_lineEdit = qobject_cast<QLineEdit*>(watched);
        if (watched_as_lineEdit != nullptr) {
            qApp->clipboard()->setText(watched_as_lineEdit->text());
            return true;
        }
    }

    return QMainWindow::eventFilter(watched, event); // change for actual parent class if different from QMainWindow
}