Qt QDesktopServices::openUrl在两个平台上都不起作用,无论是URL还是本地文件
我有一个这样简单的代码:Qt QDesktopServices::openUrl在两个平台上都不起作用,无论是URL还是本地文件,qt,Qt,我有一个这样简单的代码: int main() { QUrl url("http://google.com"); if (!QDesktopServices::openUrl(url) ) qDebug() << "Failed to open url"; return 0; } intmain(){ QUrl url(“http://google.com"); 如果(!QDesktopServices::openUrl(url)) qD
int main() {
QUrl url("http://google.com");
if (!QDesktopServices::openUrl(url) )
qDebug() << "Failed to open url";
return 0;
}
intmain(){
QUrl url(“http://google.com");
如果(!QDesktopServices::openUrl(url))
qDebug()是模块的一部分。因此,要使用与QDesktopServices
相关的任何函数,您需要至少实例化一个:
由于QGUI应用程序对象进行了大量初始化,因此它必须
在创建与用户界面相关的任何其他对象之前
创造
事实上,您可以创建一个(正如@Alex Spataru所建议的),因为它继承了QGuiApplication
int main(int argc, char *argv[]) {
QApplication app(argc, argv); // just this line
QUrl url("http://google.com");
if ( !QDesktopServices::openUrl(url) )
qDebug() << "Failed to open url";
return 0;
}
intmain(intargc,char*argv[]){
QApplication应用程序(argc,argv);//仅此行
QUrl url(“http://google.com");
如果(!QDesktopServices::openUrl(url))
qDebug()您的计算机上是否有默认webbrowser的任何特定配置?示例似乎很好。在Ubuntu上,默认浏览器是Firefox,在Windows上是Chrome。我没有进行任何特定配置。我刚才发现,如果我使用相同的QDesktopServices::openUrl,则不是作为独立代码使用,而是在一个bigge的上下文中使用我正在开发的r GUI应用程序-它可以工作!(在Ubuntu和Windows上都可以)。似乎openUrl需要一些额外的东西才能工作,但为什么在编译上面的示例时它不会产生任何依赖项错误?请尝试在代码中初始化QApplication,它可能与事件系统有关。这与事件系统无关;相反,QApplication
加载库以使事情更简单keQDesktopServices
在构建时工作。如果没有QApplication
实例,就没有桌面服务。
int main(int argc, char *argv[]) {
QApplication app(argc, argv); // just this line
QUrl url("http://google.com");
if ( !QDesktopServices::openUrl(url) )
qDebug() << "Failed to open url";
return 0;
}