QEventLoop:在没有QApplication的情况下无法使用 [英] QEventLoop: Cannot be used without QApplication

查看:19
本文介绍了QEventLoop:在没有QApplication的情况下无法使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试根据特定架构验证XML文件。
因此,我将模式加载到QXmlSchema对象中。但我收到了一些奇怪的错误。
我的代码如下:

int main() {

QUrl url("http://www.schema-example.org/myschema.xsd");

QXmlSchema schema;
if (schema.load(url) == true)
    qDebug() << "schema is valid";
else
    qDebug() << "schema is invalid";

return 1;
}

当我尝试运行上述代码时,Qt错误显示:

QEventLoop:没有QApplication就不能使用
QDBusConnection:在QCoreApplication之前创建的System D_Bus连接。
应用程序可能运行不正常。
QEventLoop:没有QApplication就不能使用

我的Qt Designer版本:qt4-Designer 4:4.8.1-0ubuntu4.1
我的Qt Creator版本:qtcreator 2.4.1-0ubuntu2

有人能帮我解决这个问题吗?
谢谢

推荐答案

QXmlSchema创建从QObject继承的消息处理程序等。由于该消息处理程序将使用Qt的事件系统,因此需要一个事件循环(处理事件的排队和路由的结构)。正如错误消息告诉您的,主事件循环将与QApplication一起创建。

如果您创建的是一个图形用户界面应用程序,通常您的main()函数中应该有少量代码,类似于:

int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  MainWindow w;
  w.show();

  return a.exec();
}

比如说,在MainWindow的构造函数中开始您的代码:

MainWindow::MainWindow(QWidget *parent) :
  QMainWindow(parent),
  ui(new Ui::MainWindow)
{
  ui->setupUi(this);

  QUrl url("http://www.schema-example.org/myschema.xsd");

  QXmlSchema schema;
  if (schema.load(url) == true)
    qDebug() << "schema is valid";
  else
    qDebug() << "schema is invalid";
}

这篇关于QEventLoop:在没有QApplication的情况下无法使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆