问题标签 [qtquickcontrols2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1674 浏览

android - Qt Quick Controls 2 缩放

我正在开发应该在移动和桌面平台上运行的应用程序。我发现控件大小在不同屏幕上有所不同的问题:在高密度屏幕中控件太小而在低密度屏幕中相当大。

我可以计算每个屏幕的比例因子(即使用 Android 的与密度无关的像素)并使用它来定义项目大小、边距等dp

它运行良好,但似乎 Qt Quick Controls 2 中标准控件的大小是以像素为单位定义的,因此它们不会缩放。我看到的唯一方法是使用dp而不是像素重新定义 Qt Quick Controls 2 中的所有控件。

所以我正在寻找方法来扩展标准控件而不重新定义它们。

UPD1。 我已经尝试过高 DPI 支持,它使情况变得更好,但仍然存在一些问题。以下是应用高 DPI 支持前后来自不同设备的一些主屏幕参数(请参见此处的参数说明):

似乎某些 Hight-DPI 显示器(三星平板电脑和小米手机)的情况变得更好。应用高 DPI 支持后,两款设备的 DPI 都接近 160。

但是 Retina 显示器和低密度显示器的 DPI 没有改变,屏幕上的项目看起来比应有的大。所以它只解决了原来问题的一半。也许有人知道如何在运行时为所有 Qt 应用程序手动设置比例因子?

0 投票
1 回答
884 浏览

android - 按钮停止上的按下(波纹)动画

我有一个抽屉,里面有一个按钮,其中包括关闭抽屉。当我按下按钮时,按下的动画开始,当它被点击时抽屉关闭,然后动画(按下的动画)停止,所以当我再次打开抽屉按钮时部分突出显示。如何让它继续动画?

0 投票
1 回答
416 浏览

android - 当设备的(android)键盘处于活动状态时移动弹出窗口

我想在键盘处于活动状态时移动弹出窗口,因为现在键盘覆盖了弹出窗口。我如何知道键盘的大小以正确移动弹出窗口?

在此处输入图像描述

0 投票
1 回答
1881 浏览

qt - TabBar Qt QML中线条的颜色

如何更改突出显示中选定选项卡的线条的颜色TabBar

在此处输入图像描述

0 投票
2 回答
4635 浏览

qt - QML ListView 在模型重置时未更新

Qt 5.8,Windows 10。

快速控制 2 应用程序。在 QML 中,我有一个从 QAbstractListModel 派生的模型的 ListView。

在模型中,我有以下代码:

调用此方法后,QML 视图中没有任何反应:列表未更新。如果我返回然后转发(到带有 ListView 的页面)-它将包含更新的数据。模型对象实例始终相同。

难道我做错了什么?

更新#1

我覆盖的唯一方法是:

更新#2

C++模型代码:

QML 代码:

更新#3

当模型更新(添加一个项目)时,QML ListView 发生了一些奇怪的事情:除了它没有更新(并且它没有调用 MediaPlaylistModel::data 来检索新项目)之外,现有项目已经损坏。当我单击已存在的项目时,它的 model.id 属性始终为 0。例如,在应用程序启动时,其 model.id 为 24,添加一个项目后其 model.id 变为 0。

更新#4

App.playlists.playlist(playlistId) 返回指向此类实例的指针:

0 投票
0 回答
843 浏览

qt - Qt5.8 QML 控件2。如何在父项中制作自上而下的“抽屉”?

我正在尝试使用Controls2 Drawer在父项中制作一个自上而下的抽屉。如果我设置edge.QtTopEdge,程序挂起。但它适用于QtLeftEdge.

我究竟做错了什么。

这是代码,

谢谢你的帮助

0 投票
1 回答
846 浏览

qml - 为什么我的自定义 TabBar 在此示例中会丢失其内容子项?

我正在尝试创建一个 TabBar 具有已连接布局的子项的预览图像。但是,在添加多个选项卡后(确切数量取决于选项卡中元素的数量)QML 会引发错误,并且 PreviewTabBar 会丢失其所有内容子项。

以下是一个最小的工作示例:

我的 main.qml:

PreviewTabBar.qml 包含内容的预览:

最后但并非最不重要的是 PreviewButton.qml 使用 ShaderEffectSource 来呈现预览:

这个例子在我的机器上得到了大约 80 个标签,之后 PreviewTabBar 失去了它所有的孩子(不是 StackLayout)。然而,在具有更复杂选项卡内容的现实示例中,我最多只能获得大约 8 个选项卡。我可能做错了什么?

这是应用程序输出的相关部分:

我尝试在回调中完成动态组件创建,如下所述:

http://doc.qt.io/qt-5/qtqml-javascript-dynamicobjectcreation.html#creating-a-component-dynamically

然而,这并没有带来任何改善。

这是示例项目的链接:

https://www.file-upload.net/download-12341284/tabtestshader.zip.html

0 投票
1 回答
426 浏览

qt - 如何在 Android 平板电脑上实现主从视图 Qt/QML?

我正在将 iOS 应用程序移植到针对 Android 平板电脑的 Qt/QML。

我想保持应用程序的行为类似于原始 iOS 版本,它基于UISplitViewController.

换句话说,我需要在横向模式下使用平板电脑构建一个主从视图。

为了实现这一点,我正在考虑使用ListViewaListModel作为主视图,这样每当在 中选择项目时,ListView就会动态显示详细信息视图。

目前,我正在努力使基础知识正确。如果我的问题看起来太宽泛,请提前原谅我,但这里有几个我马上面临的绊脚石:

我在 QML 中看到的大多数示例似乎都“硬编码”了设备的屏幕尺寸。例如,Qt Creator 中的典型骨架项目将包含以下代码:

  • 如上所示,窗口的宽度和高度属性是硬编码的。在实践中,我需要根据物理设备的屏幕大小动态设置这些值。我怎样才能做到这一点?

  • 我还需要调整应用程序屏幕的大小,以便为屏幕顶部的状态栏区域(显示电池电量的区域)留出一些空间。

任何代码片段以及说明如何实现这一点的在线文档的指针都将非常感激!

编辑:这是一个更新的 main.qml,它使用设备的屏幕大小设置应用程序窗口的大小:

应用程序窗口的宽度、高度和位置可以进一步调整为不与设备的状态栏区域重叠。

但是我仍然坚持布局方向,默认为纵向。如何将布局的方向更改为横向?

0 投票
3 回答
978 浏览

qt - 如何在 Qt/QML 中实现 Master Details View(第 2 部分)

我之前在这里问过如何在 Qt/QML 中实现 Master Details View:How to implement a master-details view Qt/QML on an Android tablet? .

在继续研究这个问题后,我得出了以下样机 QML 布局:

主视图本质上是一个带有多个项目的 ListView(每个项目代表一个可选元素,这将触发详细信息视图的更新,当前由绿色矩形表示(见下面的附加截图)

目前我仍然有以下几点问题:

  • 我应该如何修改布局以使 ListView 覆盖整个屏幕高度?

  • 当我“滚动”通过 ListView 时,我注意到很多屏幕闪烁?我怎样才能最小化这个?

  • 如何防止显示整个上部状态栏(显示电池电量等设备系统信息的位置)?

在此处输入图像描述

编辑:通过在 ScrollView 中添加 ListView 来修改代码。在这种情况下,ScrollView 的高度与屏幕高度相同,这也是我想要的(减去顶部 50 的偏移量,见下图)。我认为 ListView 的行为符合预期,并且没有占用其项目更多的空间。

在此处输入图像描述

现在需要实现的是改变 SrollView 的 Background 颜色,使其与 ListView 颜色相匹配。在这种情况下,它看起来好像 ListView 占据了整个空间。

0 投票
1 回答
726 浏览

android - Qt/QML SwipeDelegate 在移动设备(Android、iOS)上无法正常工作

我是 Qt/QML 编程的新手,正在尝试让以下示例在移动设备上正常运行。当我尝试“向右滑动”然后点击删除按钮时,“Listview-item”将不会被删除。在桌面上一切正常,但在移动设备上它不能正常工作。谁能帮我解决我的问题?