通过 eventFilter 获取 QLineEdit 的某些 属性 到剪贴板
Get certain property of a QLineEdit via eventFilter to clipboard
我正在尝试创建一个 QLineEdit
元素,其文本将在单击时自动复制到剪贴板。
我创建了以下 eventFilter
来捕获点击事件并将其安装在适用的元素上:
bool MainWindow::eventFilter(QObject *watched, QEvent *event)
{
if(event->type() == QEvent::MouseButtonPress)
{
qDebug("TEST");
return true;
}
else
{
return false;
}
}
从这里收集我需要的数据并传递给剪贴板函数的最佳方法是什么?
使用 QClipboard
class. You can get your application's clipboard using 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
}
我正在尝试创建一个 QLineEdit
元素,其文本将在单击时自动复制到剪贴板。
我创建了以下 eventFilter
来捕获点击事件并将其安装在适用的元素上:
bool MainWindow::eventFilter(QObject *watched, QEvent *event)
{
if(event->type() == QEvent::MouseButtonPress)
{
qDebug("TEST");
return true;
}
else
{
return false;
}
}
从这里收集我需要的数据并传递给剪贴板函数的最佳方法是什么?
使用 QClipboard
class. You can get your application's clipboard using 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
}