国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

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

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

問(wèn)題描述

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

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

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

問(wèn)題解答

回答1:

先看下面一段代碼的輸出

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

所以你后面說(shuō)的兩個(gè)test的輸出,需要好好檢查一下。

然后

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

這里如果將v賦值給html會(huì)崩潰,那么就需要檢查一下崩潰的原因了。你可以先把QString html;前加上static看看是否還會(huì)崩潰。如果沒(méi)有,那么說(shuō)明這里的調(diào)用是異步的,在調(diào)用這個(gè)lambda的時(shí)候,html已經(jīng)不存在了。

回答2:

c++11的匿名函數(shù)的作用是為了異步吧,是不是你的變量html離開(kāi)了作用域了。

標(biāo)簽: web
相關(guān)文章:
主站蜘蛛池模板: 香港免费毛片 | 久久精品在现线观看免费15 | 国产精品自拍亚洲 | 日韩国产成人精品视频人 | 欧美成人看片一区二区三区尤物 | 国产亚洲久久 | 97视频免费播放观看在线视频 | 三级三级三级网站网址 | 男人天堂网在线 | 亚洲美女在线视频 | 国产精品视频久久 | 欧美一级毛片100部 欧美一级毛片aaaaa | 一级特黄一欧美俄罗斯毛片 | 欧美一级www毛片 | 免费一级毛片在线观看 | 久久99精品久久久久久秒播 | 京野结衣免费一区二区 | 亚洲国产国产综合一区首页 | 亚洲欧美精品一区二区 | 亚洲精品久久久久久久无 | 欧美黑寡妇特a级做爰 | 九九精品激情在线视频 | 欧美一级毛片免费大片 | 日韩一区二区三区在线播放 | 免费一级a毛片在线播放 | 国产精品久久国产精品99 | 成人在线精品视频 | 视频二区欧美 | 国产在线不卡免费播放 | 国产精品2019 | 亚洲一区二区天海翼 | 综合免费视频 | 99视频福利| 免费看欧美成人性色生活片 | 久久精品亚洲 | 99av在线 | 国产在线一区二区三区在线 | 做爰www免费看视频 1024色淫免费视频 | 亚洲免费在线视频播放 | 国产精品极品美女自在线看免费一区二区 | 久久国产亚洲观看 |