将Qt imports目录路径作为参数传递
来源:互联网 发布:mac安装双系统win10 编辑:程序博客网 时间:2024/06/16 09:01
我过去使用环境变量指定imports目录路径,在看过qmlscene的代码后,我能够将imports路径作为参数传递给我的程序。下面是我的完整代码:
#include <QtQml>#include <QtQuick/QQuickView>#include <QtCore/QString>#include <algorithm>#ifdef QT_WIDGETS_LIB#include <QtWidgets/QApplication>#else#include <QtGui/QGuiApplication>#endif#ifdef QT_WIDGETS_LIB#define Application QApplication#else#define Application QGuiApplication#endifQCoreApplication* createApplication(int & argc, char * argv[]) { for (int i = 1; i < argc; ++i) { if (!qstrcmp(argv[i], "-no-gui")) { return new QCoreApplication(argc, argv); } } return new QApplication(argc, argv);}int main(int argc, char *argv[]){ if ((argc != 3) || qstrcmp(argv[1], "-I")) { qWarning("Error: You must pass the location of plugins as one argument, e.g. -I ..\imports"); return -1; } QDir folder(argv[2]); QString imports_dir_path; if (!folder.exists()) { QFileInfo info(argv[0]); QDir dir(info.absoluteDir().absolutePath() + QDir::separator() + argv[2]); imports_dir_path = dir.absolutePath(); if (!dir.exists()) { QString err = "Error: The passed imports path is not a real folder, -I " + folder.absolutePath(); qWarning(err.toStdString().c_str()); return -1; } } else { imports_dir_path = folder.absolutePath(); } QScopedPointer<QCoreApplication> app(createApplication(argc, argv)); if (qobject_cast<QApplication*>(app.data())) { QQmlApplicationEngine engine; engine.addImportPath(imports_dir_path); engine.load(QUrl("qrc:/qmls/main.qml")); QObject * topLevel = engine.rootObjects().value(0); QQuickWindow * window = qobject_cast<QQuickWindow*>(topLevel); if (!window) { qWarning("Error: Your root item has to be a Window."); return -1; } window->showMaximized(); return app->exec(); } else { }}
核心是使用QQmlApplicationEngine::addImportPath方法。
为了支持相对路径,我首先测试传递进来的路径,如果目录不存在,则将当前进程的目录路径加上相对路径。
0 0
- 将Qt imports目录路径作为参数传递
- 将对象作为参数传递
- 将vector作为参数传递
- C# Winform将控件作为参数传递
- go语言将函数作为参数传递
- 将数组作为参数进行传递
- JS 将函数作为参数传递调用
- 将函数名(地址)作为参数传递
- c++ 将lambda表达式作为参数传递
- lua 将函数作为参数传递
- 将方法作为参数传递(Javascript/Ruby)
- CMD 不支持将UNC 路径作为当前目录
- CMD 不支持将UNC 路径作为当前目录
- 如何将二维数组作为函数的参数传递
- 如何将二维数组作为函数的参数传递
- 如何将二维数组作为函数的参数传递
- 如何将二维数组作为函数的参数传递
- 将对象作为参数传递给成员函数
- jsp页面实现excl下载,java使用jxl.jar实现excl下载
- Android有线网调试
- 挨踢项目求生法则(7)——实施篇
- BI 入门经典
- win 7下myEcplice 9.0 破解(图文)
- 将Qt imports目录路径作为参数传递
- 奋斗于软件测试(by leo)
- Network Attack
- JavaScript的24条最佳实践
- vs2010 运行时出现无法启动程序 拒绝访问的一个可能的原因
- 适用于byte数组某一位上数值高效处理的函数
- hdu 2871 Memory Control(线段树)
- Tapestry3 学习笔记(二)
- K2.NET 2003笔记