gpt4 book ai didi

c++ - 如何在 Qt 中将值传递给 MenuAction?

转载 作者:太空宇宙 更新时间:2023-11-04 13:22:15 25 4
gpt4 key购买 nike

我是 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 slotHow 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com