将外部QML模块路径添加到QQmlApplicationEngine

时间:2016-03-01 17:52:29

标签: qt module cmake qml

我有一个由图形元素组成的外部QML module。我想找到它的路径,以便将其添加到我的QQmlApplicationEngine。有没有办法做到这一点?

QQmlApplicationEngine engine;

engine.addImportPath("externalQmlModulePath");

有了这个,我将import qrc QMLSub Merge() Dim ws As worksheet: Set ws = ThisWorkbook.Sheets("Sheet1") Dim ws2 As worksheet: Set ws2 = ThisWorkbook.Sheets("Sheet2") Dim sheet2Rng As Range: Set sheet2Rng = ws2.UsedRange Dim startRow As Integer: startRow = LastRow(ws) + 1 Dim ws2RowCount As Integer: sheet2Rng.Rows.Count ChangeEvents False ws.Range("A" & startRow).Resize(ws2RowCount, 4).value = sheet2Rng.value ChangeEvents True End Sub Public Function LastRow(worksheet As worksheet) As Integer LastRow = worksheet.Cells(Rows.Count, 1).End(xlUp).Row End Function Sub ChangeEvents(value As Boolean) Application.EnableEvents = value End Sub 文件中的图形元素(当然在项目中)。

1 个答案:

答案 0 :(得分:2)

看看QStandardpaths。拥有与这些路径相关的资源(无论是您自己的还是第三方)使它们在目标系统上始终可用。特定于应用程序的数据的建议路径为QStandardPaths::AppDataLocation

在CMake中你可以添加一个自定义的构建后命令来复制你的所有资源(再次,如果你自己或第三方没有区别):

add_custom_command(TARGET ${MY_APP} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${MY_APP_RES_SOURCE_DIR} ${MY_APP_RES_DEST_DIR})

修改

QStandardPaths::AppDataLocation当然只是一个枚举值,用于指定您要查找的标准路径。要实际获取应用数据路径,请使用standardLocations方法,如下所示:

auto appDataPath = QStandardPaths::standardLocations(QStandardPaths::AppDataLocation).first();

最后,添加您应用的资源文件夹作为导入路径(就像您已经做过的那样)并且您已完成:

engine.addImportPath(appDataPath + "/res_dir_name");

注意:在Mac上,您可以通过在应用程序包中放置资源来更轻松地离开。