我使用QDeskTopServices
在我的Qt应用程序中打开一个URL,但如果浏览器在后台已经打开,它不来的前景和不上呼吁什么QDeskTopServices
。如何从应用程序关闭已打开的浏览器中的Qt
有没有什么方法可以检查并关闭浏览器,如果它已经在后台打开?
我使用QDeskTopServices
在我的Qt应用程序中打开一个URL,但如果浏览器在后台已经打开,它不来的前景和不上呼吁什么QDeskTopServices
。如何从应用程序关闭已打开的浏览器中的Qt
有没有什么方法可以检查并关闭浏览器,如果它已经在后台打开?
我发现把浏览器到前一个答案,但依然工作所需的URL传递到浏览器。
#if defined(Q_WS_S60)
TPtrC16 textPtr(reinterpret_cast<const TUint16*>(theUrl.utf16()));
HBufC *param = HBufC::NewMaxLC(textPtr.Length());
param->Des().Copy(_L("4 http://google.com"));
RApaLsSession apaLsSession;
const TUid KBrowserUid = {0x10008D39};
TApaTaskList taskList(CEikonEnv::Static()->WsSession());
TApaTask task = taskList.FindApp(KBrowserUid);
if (task.Exists()){
// Switch to existing browser instance
task.BringToForeground();
HBufC8* param8 = HBufC8::NewLC(param->Length());
param8->Des().Append(*param);
task.SendMessage(TUid::Uid(0), *param8); // UID not used
CleanupStack::PopAndDestroy(param8);
}
else {
if(!apaLsSession.Handle()) {
User::LeaveIfError(apaLsSession.Connect());
}
TThreadId thread;
User::LeaveIfError(apaLsSession.StartDocument(*param, KBrowserUid, thread));
apaLsSession.Close();
}
CleanupStack::PopAndDestroy(param);
#else
//QDesktopServices::openUrl(QUrl("http://google.com"));
#endif
如果有任何建议,那么请把它添加到答案。
问题解决了,只需在您的project.pro文件中添加“symbian:TARGET.CAPABILITY + = SwEvent”并制作签名应用程序即可。这将解决问题:)
QDesktopServices::openUrl(QUrl("http://google.com"));
使用上述行可以打开浏览器。在project.pro文件,并签署应用:也只是增加“TARGET.CAPABILITY + = SwEvent塞班”。
推荐这个LINK
有没有这样的检查。将运行的浏览器引导到前台可能不被窗口系统允许(在Windows中,前台进程需要允许)。如果它甚至不在后台打开该URL,那就是一个错误。你在哪个平台上? – 2012-04-04 08:33:33
你正在编码的平台,对于symbian,我认为你需要特殊的能力来做到这一点。 – Kunal 2012-04-04 09:11:55
@Kunal我编码symbain平台,我想这个环节还可以,但它显示了我错误[链接](http://www.developer.nokia.com/Community/Wiki/TSS000340_-_Launching_the_Web_browser_on_S60_3rd_Edition_to_open_a_specified_URL) – abhishek 2012-04-04 09:52:08