diff --git a/3rdparty/QCefView/lib/libQCefView.a b/3rdparty/QCefView/lib/libQCefView.a index dff1cfb..6302f24 100644 Binary files a/3rdparty/QCefView/lib/libQCefView.a and b/3rdparty/QCefView/lib/libQCefView.a differ diff --git a/compatibility.manifest b/compatibility.manifest index dc4ae16..54f4c57 100644 --- a/compatibility.manifest +++ b/compatibility.manifest @@ -17,6 +17,7 @@ + diff --git a/src/QCefWidget/CefWidget.cpp b/src/QCefWidget/CefWidget.cpp index 2567542..f5edb32 100644 --- a/src/QCefWidget/CefWidget.cpp +++ b/src/QCefWidget/CefWidget.cpp @@ -52,10 +52,7 @@ CefWidget::CefWidget(QWidget *parent) m_Layout->setStretch(1, 8); setBaseSize(QSize(width(),height())); setLayout(m_Layout); - setWindowFlags(Qt::Window); // 使用标准窗口样式 - setAttribute(Qt::WA_TranslucentBackground, false); initBrowser(); - setObjectName("CefWidget"); } CefWidget::~CefWidget() @@ -71,7 +68,7 @@ void CefWidget::initBrowser() } setting.setWindowlessFrameRate(1000); setting.setHardwareAcceleration(true); - m_CefWidget = new CefViewWidget("about:blank", &setting, this); + m_CefWidget = new QCefView("about:blank", &setting, this); connect(m_CefWidget, &QCefView::invokeMethod, this, &CefWidget::onInvokeMethod); connect(m_CefWidget, &QCefView::cefUrlRequest, this, &CefWidget::onQCefUrlRequest); connect(m_CefWidget, &QCefView::cefQueryRequest, this, &CefWidget::onQCefQueryRequest); @@ -156,6 +153,7 @@ void CefWidget::onInvokeMethod(const QCefBrowserId &browserId, } else { + } } diff --git a/src/QCefWidget/CefWidget.h b/src/QCefWidget/CefWidget.h index 764ded0..d50c9c1 100644 --- a/src/QCefWidget/CefWidget.h +++ b/src/QCefWidget/CefWidget.h @@ -7,8 +7,8 @@ #include #include #include -//#include -#include "CefViewWidget.h" +#include +//#include "CefViewWidget.h" class CefWidget : public QWidget { Q_OBJECT @@ -32,14 +32,12 @@ private: QLineEdit* m_TextToUrl={}; QPushButton* m_BtnToUrl={}; QPushButton* m_BtnToString={}; - CefViewWidget* m_CefWidget ={}; + QCefView* m_CefWidget ={}; QCefSetting setting; bool DevMode=true; QString html_template; -protected: - void createLeftCefView(); // QCefView slots -protected slots: +public slots: void onInvokeMethod(const QCefBrowserId& browserId, const QCefFrameId& frameId, const QString& method, @@ -60,7 +58,7 @@ protected slots: const QString& errorMsg, const QString& failedUrl); //ui slots -protected slots: +public slots: void onBtnShowDevToolsClicked(); void onBtnSetFocusClicked(); void onBtnCallJSCodeClicked(); diff --git a/src/main.cpp b/src/main.cpp index 01373e5..3419d38 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -5,10 +5,9 @@ #include "sui_base_ex.h" #include "ctai.h" #include -#include #include #include "QCefWidget/CefWidget.h" -#define DEBUG_PRINT true +#define DEBUG_PRINT false void debug_print_argv(int argc, char *argv[]) { if (!argc) @@ -63,48 +62,42 @@ void initConfig(int argc, char *argv[], QCefConfig &config, QString currentDir) config.setCachePath(currentDir + "/user/userCache"); config.setResourceDirectoryPath(currentDir + "/cef_binary"); config.setLocalesDirectoryPath(currentDir + "/cef_binary/locales"); + config.setBridgeObjectName("CallBridge"); + config.setBuiltinSchemeName("CefView"); // 浏览器标识 config.setUserAgent("Mozilla/5.0 (Windows NT 10.0; CEF/3.2272.2035) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 SoftwareInformer/1.6.1400"); // 日志输出级别 config.setLogLevel(QCefConfig::LOGSEVERITY_VERBOSE); - // 桥名字 - config.setBridgeObjectName("CtaiClient"); - // 内置的协议方案名称 - config.setBuiltinSchemeName("Ctai"); // 无窗口渲染模式 - // config.setWindowlessRenderingEnabled(true); + config.setWindowlessRenderingEnabled(false); // 远程Debug端口 // config.setRemoteDebuggingPort(9000); // 请求头的语言 config.setAcceptLanguageList("zh-CN"); // 允许忽略 localhost 上的 TLS/SSL 错误 - config.addCommandLineSwitch("allow-insecure-localhost"); config.addCommandLineSwitch("ignore-certificate-errors-spki-list"); config.addCommandLineSwitch("ignore-ssl-errors"); // 单进程模式 - // config.addCommandLineSwitch("single-process"); + // config.addCommandLineSwitch("single-process"); // 启用GPU加速 config.addCommandLineSwitch("enable-gpu"); // GPU加速合成 - config.addCommandLineSwitch("enable-gpu-compositing"); + //config.addCommandLineSwitch("enable-gpu-compositing"); // 在进程中使用GPU渲染-开启后只有一个进程 - config.addCommandLineSwitch("in-process-gpu"); + //config.addCommandLineSwitch("in-process-gpu"); // 无头模式 // config.addCommandLineSwitch("headless"); - // 密钥链 - config.addCommandLineSwitch("use-mock-keychain"); // chrome运行时环境 config.addCommandLineSwitch("enable-chrome-runtime"); - // Alloy 风格 - config.addCommandLineSwitch("use-alloy-style"); // 离屏渲染 - // config.addCommandLineSwitch("off-screen-rendering-enabled"); + config.addCommandLineSwitch("off-screen-rendering-enabled"); // 网络服务In进程 - config.addCommandLineSwitchWithValue("enable-features", "NetworkServiceInProcess"); + //config.addCommandLineSwitchWithValue("enable-features", "NetworkServiceInProcess"); // 语言 config.addCommandLineSwitchWithValue("lang", "zh-CN"); // 跨域进行远程 // config.addCommandLineSwitchWithValue("remote-allow-origins", "*"); + // 禁用沙盒 config.addCommandLineSwitchWithValue("no-sandbox", "ture"); // 渲染进程限制 @@ -112,7 +105,8 @@ void initConfig(int argc, char *argv[], QCefConfig &config, QString currentDir) // 外部消息循环 config.addCommandLineSwitchWithValue("external-message-pump", "false"); // 多线程消息循环 - config.addCommandLineSwitchWithValue("multi-threaded-message-loop", "true"); + config.addCommandLineSwitchWithValue("multi-threaded-message-loop", "false"); + } int main(int argc, char *argv[]) { @@ -128,25 +122,25 @@ int main(int argc, char *argv[]) QCefContext cefContext(&a, argc, argv, &config); CefWidget cw; cw.show(); - qputenv("QT_QPA_PLATFORM", "windows:fontengine=freetype"); - // 加载语言包 - QTranslator qtBaseTranslator; - if (!qtBaseTranslator.load(QStringLiteral(":/res/translator/qtbase_zh_CN.qm"))) - { - // 处理加载翻译文件失败的情况 - qDebug() << "Failed to load translation file."; - return -1; - } - a.installTranslator(&qtBaseTranslator); - // 读取窗体的配置并初始化 - sui_init_config(); - ctai x; - x.init_layout(); - // 仅限于windows平台 -#if defined(__WIN32__) - x.title()->set_type(QD_TYPE::QD_EXIT); -#endif - x.show(); +// qputenv("QT_QPA_PLATFORM", "windows:fontengine=freetype"); +// // 加载语言包 +// QTranslator qtBaseTranslator; +// if (!qtBaseTranslator.load(QStringLiteral(":/res/translator/qtbase_zh_CN.qm"))) +// { +// // 处理加载翻译文件失败的情况 +// qDebug() << "Failed to load translation file."; +// return -1; +// } +// a.installTranslator(&qtBaseTranslator); +// // 读取窗体的配置并初始化 +// sui_init_config(); +// ctai x; +// x.init_layout(); +// // 仅限于windows平台 +// #if defined(__WIN32__) +// x.title()->set_type(QD_TYPE::QD_EXIT); +// #endif +// x.show(); a.exec(); qDebug() << "EXIT"; return 0;