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
加载库以使事情更简单ke
QDesktopServices
在构建时工作。如果没有
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;   
}