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

标签 c++ qt events clipboard qlineedit

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

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

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

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

最佳答案

使用 QClipboard类(class)。您可以使用 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
}

关于c++ - 通过 eventFilter 获取 QLineEdit 的某些属性到剪贴板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43806866/

相关文章:

c++ - 定义常量变量会使您的程序更小吗?

c++ - 使用 QTcpSocket 发送字节

java - JTable:检测单元格数据变化

javascript - Antlr4 基于事件的访客 (javascript)

C++ Qt 命名空间和循环依赖

javascript - onClick 方法适用于第二次单击。但它应该在第一次点击时起作用

c++ - 在 g++ 中启用严格的别名警告

c++ - 模板化别名声明的部分特化

c++ - 0ui64 是多少号?

c++ - 来自 QT QWidget 的 X11 小部件