小编Cha*_*les的帖子

如何在QML转换结束时切换到另一个状态?

我正在尝试实施一个健身应用程序,显示当前的锻炼名称,然后在休息期间显示进度条.当进度条完全填满时,将显示下一个练习的名称,然后在完成时显示进度条,依此类推.

请注意,我在此示例中使用了一个进度条,但我将在实际应用程序中拥有自己的小部件.

我的系统有两种状态:

  • 练习进度条的值为0并保持为0
  • 休息进度条的值从0在静止周期的持续时间进行到maximumValue

所以它是这样的:

  1. 应用程序处于"运动"状态,并显示当前练习的名称
  2. 用户执行练习并在完成后单击进度条
  3. 应用程序切换到"休息"状态
  4. 用户在进度条完成时休息
  5. 进度条完成后,应用程序切换回"运动"状态并显示下一个练习的名称

我的问题在于第5步:我不知道如何在转换结束时切换回另一个状态.我试图在PropertyChanges期间更改"state"属性,并在使用SequentialAnimation的转换结束时计时,但是我收到此错误消息:

QML StateGroup:不能将状态更改作为状态定义的一部分应用.

以下是一些示例代码:

import QtQuick 2.0
import QtQuick.Controls 1.1

ProgressBar {
    id: root

    width: 200
    height: 48

    minimumValue: 0
    maximumValue: 100
    value: 76

    function switchState() {
        if (state == "exercise")
        {
            state = "rest"
            return
        }

        if (state == "rest")
        {
            state = "exercise"
            return
        }
    }

    state: "exercise"

    states: [
        State {
            name: "exercise"
            PropertyChanges {
                target: root
                value: 0
            }
        },
        State {
            name: …
Run Code Online (Sandbox Code Playgroud)

qt qml

7
推荐指数
1
解决办法
7861
查看次数

使用CMake在安装时创建指向库的自定义符号链接

在使用CMake的Linux下,我正在构建一个共享库libIex-2_0.so.10.0.1

ADD_LIBRARY (Iex SHARED
  [*.cpp]
)
SET_TARGET_PROPERTIES(Iex PROPERTIES OUTPUT_NAME "Iex-2_0")
Run Code Online (Sandbox Code Playgroud)

10.0.1版本设置为调用

SET_TARGET_PROPERTIES ( Iex
  PROPERTIES
  VERSION 10.0.1
  SOVERSION 10
)
Run Code Online (Sandbox Code Playgroud)

在安装文件夹中,将创建这些链接

libIex-2_0.so -> libIex-2_0.so.10
libIex-2_0.so.10 -> libIex-2_0.so.10.0.1
libIex-2_0.so.10.0.1
Run Code Online (Sandbox Code Playgroud)

但是,要匹配以前使用其他构建系统构建的构建,我需要添加旧的符号链接,剥离2_0后缀:

libIex.so -> libIex-2_0.so.10.0.1
Run Code Online (Sandbox Code Playgroud)

创建这样一个链接的CMake方法是什么?

unix symlink build cmake

6
推荐指数
2
解决办法
7134
查看次数

Vuex:直接访问存储还是传递属性?

我正在将纯 Vue 应用程序迁移到 Vuex,但我不确定将数据传递到下游组件的最佳方式。Vue 的方式是将它们作为属性传递:

<component :my-prop="myProp"/>
Run Code Online (Sandbox Code Playgroud)

Vuex的方式好像是直接访问store:

computed: {
    myProp: function() {
        return this.$store.state.myProp;
    }
}
Run Code Online (Sandbox Code Playgroud)

Vuex 方式不是倾向于将视图(组件)和数据(存储)层结合得更紧密吗?另一方面,向下游传递属性可能会有点痛苦。

在 Vuex 中访问存储数据的推荐方式是什么?

javascript frontend vue.js vuex

5
推荐指数
1
解决办法
3023
查看次数

标签 统计

build ×1

cmake ×1

frontend ×1

javascript ×1

qml ×1

qt ×1

symlink ×1

unix ×1

vue.js ×1

vuex ×1