我正在尝试针对特定架构验证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
有人可以帮我解决这个问题吗 谢谢
答案 0 :(得分:6)
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";
}