亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

c++ - 如何正確的使用QWebEngineView?

瀏覽:110日期:2024-03-26 08:53:44

問題描述

自從5.6版本徹底移除qwebkit,打算使用新的web引擎,大體函數沒有改變。但是一些發現了一些使用c++11的匿名函數作為參數的。比如:webengineview中:void toHtml(FunctorOrLambda resultCallback) const在webkit中:QString QWebFrame::toHtml() const按理說使用時是這樣(當loadfinished后調用):

QString html;m_view->page()->toHtml( [&](const QString &v ){ qDebug() << v;//這樣是可以的。 html = v;//這樣是直接崩潰的});//后來做個測試外部int test = 1;//添加個測試//lambda內部test = 2;//這句在外部輸出仍然是1很奇怪qDebug() << test; //仍然是1

不太能搞明白為什么新的函數要這么設計,明明一個返回值就可以的,為什么用lambda函數,本來QString html = ...->toHtml();一句搞定的,非得按照上面那樣(最主要的是按照上面那樣用,我壓根取不到值!)感覺被設計是不是有點為了C++11而C++11了。

問題解答

回答1:

先看下面一段代碼的輸出

int test = 1; auto f = [&](){ test = 5; cout<<test<<endl; }; cout<<test<<endl; // 輸出 1 f(); // 輸出 5 cout<<test<<endl; // 輸出也是5

所以你后面說的兩個test的輸出,需要好好檢查一下。

然后

m_view->page()->toHtml( [&](const QString &v ){ qDebug() << v;//這樣是可以的。 html = v;//這樣是直接崩潰的});

這里如果將v賦值給html會崩潰,那么就需要檢查一下崩潰的原因了。你可以先把QString html;前加上static看看是否還會崩潰。如果沒有,那么說明這里的調用是異步的,在調用這個lambda的時候,html已經不存在了。

回答2:

c++11的匿名函數的作用是為了異步吧,是不是你的變量html離開了作用域了。

標簽: web
相關文章:
主站蜘蛛池模板: 不卡久久 | 深夜免费看片 | 1024在线观看 | 国产三级黄色片 | 亚洲国产精品一区二区不卡 | 99www综合久久爱com | 欧美真人视频一级毛片 | 国产成人综合在线观看网站 | 免费高清小黄站在线观看 | 亚洲一区二区三区视频 | 亚洲一区二区三区欧美 | 国语自产偷拍精品视频偷最新 | 久久中文字幕一区二区三区 | 精品亚洲欧美高清不卡高清 | 国产精品久久新婚兰兰 | 免费一级a毛片 | 真实国产乱子伦精品一区二区三区 | 日韩视频免费在线播放 | 婷婷综合亚洲 | 男人色网站 | 国产欧美视频在线 | 久久婷婷丁香七月色综合 | 日本一级特黄大一片免 | 久久精品国产999久久久 | 色婷婷狠狠久久综合五月 | 黄色一级片毛片 | 国产亚洲女在线线精品 | 久久国产精品免费视频 | 日韩精品电影一区 | 亚洲一区二区三区四区在线观看 | 性色a v 一区 | 尤物视频在线观看视频 | 国产成人18黄网站麻豆 | 一级a级国产不卡毛片 | 亚洲国产成人久久一区久久 | 99久久精品国产自免费 | 欧美一级专区免费大片俄罗斯 | 最近最新中文字幕免费的一页 | 奇米狠狠色 | 57pao国产成视频一永久免费 | 日本韩国中文字幕 |