How to install QtQuick.Controls 1.4 on Ubuntu?
我已经安装了最新的Qt 5.5.0,但似乎只有QtQuick.Controls 1.0和1.1。我想使用TreeView,它包含在1.4版本中。
- 谢谢。在3个不同的目录~Qt5.5.05.5SrcqtquickcontrolssrccontrolsTreeView.qml- -- ~Qt5.5.05.5gcc_64qmlQtQuickControlsTreeView.qml--- ~Qt5.5.0ToolsQtCreatorbinqmlQtQuickControlsTreeView. qml中找到我应该添加哪个路径? @VictorPolevoy
-
等等...您是否真的尝试运行一个使用1.4版本控件的示例?
-
杜德(Dude),有那么多例子,您怎么知道哪个使用1.4版本。无论如何,我找到了一个。尽管qt creator始终警告未找到TreeView组件,但它可以工作。谢谢@Mitch
您应该已经拥有它。尝试使用定位TreeView.qml查找TreeView.qml。另外,QtCreator或您的IDE应该具有从环境中获取的正确的QML_IMPORT_PATH。例如,我的QtCreator没有设置正确的路径,因此我将其与shell脚本一起使用,该脚本会设置路径并在之后运行/usr/bin/qtcreator-这使QtCreator能够查看新的QML模块。我不知道这是一个错误还是只是一个Ubuntu软件包问题,但仅当我手动设置QML_IMPORT_PATH时,它才对我有用。
您说您具有以下路径:
~/Qt5.5.0/5.5/Src/qtquickcontrols/src/controls/TreeView.qml
~/Qt5.5.0/5.5/gcc_64/qml/QtQuick/Controls/TreeView.qml
~/Qt5.5.0/Tools/QtCreator/bin/qml/QtQuick/Controls/TreeView.qml
好像您是通过从Qt的站点下载官方安装程序进行安装的。因此,第一个路径是源路径。永远不要使用它,只需要在从源代码编译Qt并执行make install。
之后,将其安装到正确的目录中即可。
第三个与您的QtCreator安装集成在一起,但似乎对您不起作用。
我想说的是,您的选择是使用第二条路径(~/Qt5.5.0/5.5/gcc_64/qml/QtQuick/Controls/TreeView.qml)。通常,它会自动安装到amd64架构上的/usr/lib/x86_64-linux-gnu/qt5/上,而对于i386架构自动安装到/usr/lib/i386-linux-gnu/上。
因此,在/usr/bin/中创建一个脚本,例如将其命名为dev-qtcr并将其放入其中:
1 2 3 4
| #!/bin/bash
export QML_IMPORT_PATH=/home/user/Qt5.5.0/5.5/gcc_64/qml
qtcreator |
请确保将/home/user更改为您的主目录。
- 因此,我将QML_IMPORT_PATH = homezenQt5.5.05.5gcc_64qml添加到我的.pro文件中。但这不起作用。我应该在哪里设置路径变量?
-
@Zen这也是一个环境变量。将其设置为该路径,然后在同一tty中运行qtcreator。我也不能仅仅通过修改.pro文件来使用新的qml组件-这就是为什么我制作了一个shell脚本。几个小时后,我可能会为您提供详细信息。
-
qt Creator可能有问题。设置环境变量没有任何区别。我发现我可以导入1.4版本,尽管qt creator始终警告未找到TreeView组件,但它可以工作。
-
@Zen Ill今天晚上检查一下。我不确定,也许对我而言,它的工作方式相同。尽快通知您。
-
@禅神,没有时间这样做。也许今天晚上。另外,如果您从~Qt5.5.0ToolsQtCreatorbin目录使用qtcreator怎么办?在这种情况下可以吗?
您是否尝试导出QML2_IMPORT_PATH而不是QML_IMPORT_PATH?
请参阅导入声明| Qt QML
-
Qt创建者仍然警告TreeView未知。
-
您可以尝试在项目配置中定义QML2_IMPORT_PATH:项目->生成并运行-> <YOUR_KIT>->运行->运行环境->详细信息->添加添加QML2_IMPORT_PATH并将其值设置为/ home / zen / Qt5。 5.0 / 5.5 / gcc_64 / qml
-
您已构建并安装了Qt5.5吗?如果您的设置没问题,那么所有事情都应该解决。一旦安装了Qt5.5,您就可以在QtCreator中添加新安装的版本并创建一个新工具包。配置项目以使用为Qt5.5创建的工具包。
-
谢谢,我稍后再试。顺便说一句,你能告诉我这是否导致内存泄漏吗?我有一个列表视图,其宽度绑定到此函数function calcWidth(){ var w = 0; for(var i in list.contentItem.children) { var child = list.contentItem.children[i]; w+=child.width; } return w }
-
好吧,我不认为这会导致内存泄漏。
另一个很丑陋的解决方案是从gcc/qml/QtQuick/Controls编辑qmldir文件并添加以下行:
TreeView 1.4 TreeView.qml
对我来说:
1 2 3 4 5 6 7
| module QtQuick.Controls
plugin qtquickcontrolsplugin
classname QtQuickControlsPlugin
typeinfo plugins.qmltypes
designersupported
depends QtQuick.Window 2.2
TreeView 1.4 TreeView.qml |
您可以对QtQuick/Controls目录中的每个QML文件执行此操作。
通过这种方式,QtCreator可以识别TreeView和您将添加到此文件的所有其他QML类型。
请参阅http://doc.qt.io/qt-5/qtqml-modules-qmldir.html