如何在 Ubuntu 上安装 QtQuick.Controls 1.4?
Posted
技术标签:
【中文标题】如何在 Ubuntu 上安装 QtQuick.Controls 1.4?【英文标题】:How to install QtQuick.Controls 1.4 on Ubuntu? 【发布时间】:2015-08-25 12:34:00 【问题描述】:我已经安装了最新的Qt 5.5.0,但是好像只有QtQuick.Controls 1.0 和1.1。我想使用TreeView
,包含在1.4版本中。
【问题讨论】:
谢谢。在 3 个不同的目录中找到~/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
我应该将哪个添加到路径中? @VictorPolevoy
等等...你真的尝试运行一个使用 1.4 版本控件的示例吗?
老兄,这么多例子,你怎么知道哪一个用的是1.4版本。不管怎样,我找到了一个。虽然 qt creator 不断警告TreeView
未找到组件,但它可以工作。谢谢@Mitch
【参考方案1】:
你应该已经拥有它了。尝试使用定位TreeView.qml
查找TreeView.qml
。此外,QtCreator 或您的 IDE 应该有正确的QML_IMPORT_PATH
,它取自环境。例如,我的QtCreator
没有设置正确的路径,所以我将它与设置路径并在之后运行/usr/bin/qtcreator
的shell 脚本一起使用——这使得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
并放入其中:
#!/bin/bash
export QML_IMPORT_PATH=/home/user/Qt5.5.0/5.5/gcc_64/qml
qtcreator
请务必将/home/user
更改为您的主目录。
【讨论】:
所以,我将QML_IMPORT_PATH = /home/zen/Qt5.5.0/5.5/gcc_64/qml
添加到我的.pro 文件中。但这不起作用。我应该在哪里设置路径变量?
@Zen 这也是一个环境变量。将其设置为此路径并在此之后在同一 tty 中运行 qtcreator。我也无法通过修改 .pro
文件来使用新的 qml 组件——这就是我制作 shell 脚本的原因。几个小时后我可能会给你详细信息。
可能是 qt creator 有问题。设置环境变量并没有什么不同。我发现我可以导入 1.4 版本,虽然 qt creator 一直警告TreeView
未找到组件,但它可以工作。
@Zen 我今晚会检查一下。也许它对我的工作方式相同,我不确定。我会尽快通知你的。
@Zen 上帝,没时间做这个。也许这个晚上。另外,如果您使用来自~/Qt5.5.0/Tools/QtCreator/bin/
目录的 qtcreator 怎么办?在这种情况下可以正常工作吗?【参考方案2】:
您是否尝试导出 QML2_IMPORT_PATH
而不是 QML_IMPORT_PATH
?
见Import Statements | Qt QML
【讨论】:
Qt 创建者仍然警告TreeView
未知。
您可以尝试在项目配置中定义QML2_IMPORT_PATH:项目->构建并运行->function calcWidth() var w = 0; for(var i in list.contentItem.children) var child = list.contentItem.children[i]; w+=child.width; return w
好吧,我认为这不会导致内存泄漏。【参考方案3】:
另一个相当难看的解决方案是从gcc/qml/QtQuick/Controls
编辑qmldir
文件并添加以下行:
TreeView 1.4 TreeView.qml
结果对我来说:
module QtQuick.Controls
plugin qtquickcontrolsplugin
classname QtQuickControlsPlugin
typeinfo plugins.qmltypes
designersupported
depends QtQuick.Window 2.2
TreeView 1.4 TreeView.qml
您可以对QtQuick/Controls
目录中的每个 QML 文件执行此操作。
这样,TreeView
和您将添加到此文件的所有其他 QML 类型将被 QtCreator 识别。
见http://doc.qt.io/qt-5/qtqml-modules-qmldir.html
【讨论】:
以上是关于如何在 Ubuntu 上安装 QtQuick.Controls 1.4?的主要内容,如果未能解决你的问题,请参考以下文章