gpt4 book ai didi

qt - 如何使 QML WebView 元素对所有 'new windows' 使用 Qt::openUrlExternally ?

转载 作者:行者123 更新时间:2023-12-04 05:49:19 26 4
gpt4 key购买 nike

制作方法QML WebView Element使用 Qt::openUrlExternally而不是一些视觉 newWindowComponent ?

最佳答案

我认为使用 QML 没有简单的方法可以做到这一点。您可以使用标准 QWebView 执行此操作,但没有办法从 QML 中访问此功能。您需要重新包装 QWebView并暴露更多功能。

使用标准 C++ 接口(interface)的示例:

测试.cpp

#include <QtGui>
#include <QtWebKit>
#include "handler.hpp"

int main(int argc, char** argv)
{
QApplication app(argc, argv);

QWebView view;
view.load(QUrl::fromUserInput("http://qt-project.org/"));

view.page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks);

LinkHandler handler;

QObject::connect(
&view, SIGNAL(linkClicked(const QUrl&)),
&handler, SLOT(open(const QUrl&)));

view.show();

return app.exec();
}

handler.hpp
#ifndef _HANDLER_HPP_
#define _HANDLER_HPP_

#include <QtGui>

class LinkHandler : public QObject
{
Q_OBJECT
public:
LinkHandler();

public slots:
void open(const QUrl& url);
};

#endif

handler.cpp
#include "handler.hpp"

LinkHandler::LinkHandler() : QObject() {}

void LinkHandler::open(const QUrl& url)
{
QDesktopServices::openUrl(url);
}

CMakeLists.txt
cmake_minimum_required(VERSION 2.8)

find_package(Qt4 4.8 REQUIRED QtCore QtGui QtWebkit)
include(${QT_USE_FILE})

qt4_wrap_cpp(MOC_FILES handler.hpp)
add_executable(test
test.cpp
handler.hpp
handler.cpp
${MOC_FILES})
target_link_libraries(test ${QT_LIBRARIES})

关于qt - 如何使 QML WebView 元素对所有 'new windows' 使用 Qt::openUrlExternally ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10270361/

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