QEventLoop:离不开的QApplication使用(QEventLoop: Cannot b

2019-06-24 15:57发布

我试图验证对特定架构的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之前创建的系统D_Bus连接。
应用程序可能无法正常运作。
QEventLoop:离不开的QApplication使用

我的Qt设计版本:QT4设计师4:4.8.1-0ubuntu4.1
我的Qt Creator的版本:qtcreator 2.4.1-0ubuntu2

可能有人请帮我解决这个问题。
谢谢

Answer 1:

QXmlSchema造成的,除其他事项外,从继承消息处理程序QObject 。 由于该消息处理程序将使用Qt的事件系统,事件循环(它处理队列和事件的路由的结构)是必需的。 随着错误消息告诉你,主事件循环与您一起创建QApplication

如果您要创建一个GUI应用程序通常,你应该在你的代码量小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: Cannot be used without QApplication
标签: qt qt4 qtxml