- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是 Qt 的新手,我正在尝试弄清楚如何将字符串传递给 MenuAction。我遗漏了一件小事,希望您能提供帮助。
我在 http://doc.qt.io/qt-5/qtwebkitexamples-webkitwidgets-browser-example.html 使用 TabBrowser 示例并尝试将“复制链接文本”选项添加到菜单,以将右键单击的链接的文本内容复制到剪贴板。我可以添加菜单项并获取文本,但我不知道如何将它传递到插槽。
这是我正在使用的代码。我缺少的那 block 拼图是什么?
void WebView::copyLinkText(QString& text)
{
QClipboard* clip = QApplication::clipboard();
clip->setText(text);
}
void WebView::contextMenuEvent(QContextMenuEvent *event)
{
QWebHitTestResult r = page()->mainFrame()->hitTestContent(event->pos());
if (!r.linkUrl().isEmpty()) {
QMenu menu(this);
menu.addAction(pageAction(QWebPage::OpenLinkInNewWindow));
menu.addAction(tr("Open in New Tab"), this, SLOT(openLinkInNewTab()));
menu.addSeparator();
menu.addAction(pageAction(QWebPage::DownloadLinkToDisk));
// Add link to bookmarks...
menu.addSeparator();
menu.addAction(pageAction(QWebPage::CopyLinkToClipboard));
QString linkText = r.linkText();
QAction* action = menu.addAction(tr("Copy Link Text"), this, SLOT(copyLinkText()));
if (page()->settings()->testAttribute(QWebSettings::DeveloperExtrasEnabled))
menu.addAction(pageAction(QWebPage::InspectElement));
menu.exec(mapToGlobal(event->pos()));
return;
}
QWebView::contextMenuEvent(event);
}
最佳答案
已经提出并回答了类似的问题,例如 Passing an argument to a slot和 How to pass a value with a clicked signal from a Qt PushButton?那里提到了相当多的技术。对我来说,“最好的”似乎是使用 lambda 的 c++11 方式,从上面的一篇文章中采用:
QAction* action = menu.addAction (tr ("Copy Link Text"));
connect (action, &QAction::triggered, this, [this]{ copyLinkText (linkText); });
这对你有用吗?我没有尝试过,并且对这种 lambda + 捕获的东西经验很少......
关于c++ - 如何在 Qt 中将值传递给 MenuAction?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34797126/
我有一个带有快捷键的 MenuItem,用于临时保存 JTextFied 的数据并打印它 保存功能在 JTextField 的 FocusLost 事件上调用,打印通过 MenuItems actio
我是 Qt 的新手,我正在尝试弄清楚如何将字符串传递给 MenuAction。我遗漏了一件小事,希望您能提供帮助。 我在 http://doc.qt.io/qt-5/qtwebkitexamples-
我是一名优秀的程序员,十分优秀!