4

我正在尝试针对特定架构验证 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 Designer 版本:qt4-designer 4:4.8.1-0ubuntu4.1
我的 Qt Creator 版本:qtcreator 2.4.1-0ubuntu2

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

4

1 回答 1

8

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

main()如果您正在创建一个 GUI 应用程序,通常您的函数中应该有少量代码,例如:

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";
}
于 2012-05-22T07:59:47.917 回答