小编Gab*_*elF的帖子

如何在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
查看次数

如何自动隐藏ApplicatioWindow menuBar?

我希望ApplicationWindow有一个自动隐藏menuBar,当鼠标光标位于窗口的最上部时显示.这在QML中是否可行?

PS:我正在使用Qt 5.3.

提前致谢.

qt qml

6
推荐指数
1
解决办法
1748
查看次数

2小时后Google Drive Python API可恢复上传错误401

首先,很抱歉,这是一个太愚蠢的问题……这是我第一次尝试使用此脚本中涉及的任何技术(Python,驱动器api,oauth 2.0等)。我发誓我一直在搜索并尝试这个问题大约一个星期,然后再发布问题。呵呵呵

我正在尝试使用google-api-python-client上传仅在终端机Linux Debian上的大文件(3.5GiB)。我已经成功地上传了小文件,但是当我尝试上传大文件时,上传开始于HTTP 401错误(未经授权)后约1〜2小时停止。我一直在寻找如何获取新的访问令牌,但收效甚微。

到目前为止,这是我的(更新的)代码:

#!/usr/bin/python

import httplib2
import pprint
import time

from apiclient.discovery import build
from apiclient.http import MediaFileUpload
from apiclient import errors
from oauth2client.client import OAuth2WebServerFlow

# Copy your credentials from the APIs Console
CLIENT_ID = 'myclientid'
CLIENT_SECRET = 'myclientsecret'

# Check https://developers.google.com/drive/scopes for all available scopes
OAUTH_SCOPE = 'https://www.googleapis.com/auth/drive'

# Redirect URI for installed apps
REDIRECT_URI = 'urn:ietf:wg:oauth:2.0:oob'

# Run through the OAuth flow and retrieve credentials
flow = OAuth2WebServerFlow(CLIENT_ID, CLIENT_SECRET, OAUTH_SCOPE, REDIRECT_URI)
authorize_url …
Run Code Online (Sandbox Code Playgroud)

python http-status-code-401 google-drive-api google-api-python-client resume-upload

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

如何获得窗口原始大小和位置(wsNormal vs wsMaximized)

我希望存储窗口大小和位置的用户个性化,以便在重新打开应用程序时使用它.这实际上很简单,我有以下代码工作:

在OnCreate:

Width := wIni.ReadInteger('FORM', 'FORMW', 980);
Height := wIni.ReadInteger('FORM', 'FORMH', 500);
PnlXMLI.Width := wIni.ReadInteger('FORM', 'PNLXMLIW', 500);
WindowState := TWindowState(GetEnumValue(TypeInfo(TWindowState), wIni.ReadString('FORM', 'WINDOWSTATE', 'wsNormal')));
Run Code Online (Sandbox Code Playgroud)

的OnDestroy:

wIni.WriteInteger('FORM', 'FORMW', Width);
wIni.WriteInteger('FORM', 'FORMH', Height);
wIni.WriteInteger('FORM', 'PNLXMLIW', PnlXMLI.Width);
wIni.WriteString('FORM', 'WINDOWSTATE', GetEnumName(TypeInfo(TWindowState), Ord(WindowState)));
Run Code Online (Sandbox Code Playgroud)

问题是当用户最大化窗口然后恢复它时,它会恢复到最大化之前的大小.但是如果他最大化,然后关闭并重新打开应用程序并恢复它,应用程序将不会在最大化之前恢复到原始大小.它将是屏幕大小,因为宽度和高度属性在读取时提供最大化的大小.

问题是:如何获得窗口的原始大小,即用户恢复窗口时将返回的大小?我尝试在读取宽度和高度之前将WindowState设置为wsNormal,但它不起作用(可能是因为表单被销毁?)...而且我宁愿使用不做不必要的GUI操作的解决方案(源代码美学原因).

提前致谢.

windows delphi winapi

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

更改可执行文件中的内部版本号

我想在可执行文件的版本信息中更改构建号(VersionLS的低位).所以,我应该阅读VS_VERSIONINFO结构,更改内部版本号,然后将其更新回PE.

我正在使用此代码作为基础:https://stackoverflow.com/a/7999813/1970843.此代码非常适合更改VS_FIXEDFILEINFO数据,但它不会更改(也不访问)StringFileInfo信息.

我很确定我应该在VERSIONHEADER打包记录中包含一些内容来添加VS_VERSIONINFO的Children条目,但我不知道具体如何做到这一点.这是我到目前为止:

type
    StringStruc = Packed Record
        wLength: Word;
        wValueLength: Word;
        wType: Word;
        //szKey: ?;
        //Value: ?;
    End;

    StringTable = Packed Record
        wLength: Word;
        wValueLength: Word;
        wType: Word;
        szKey: Array[0..8] Of WideChar;
        Children: StringStruc;
    End;

    StringFileInfo = Packed Record
        wLength: Word;
        wValueLength: Word;
        wType: Word;
        szKey: Array[0..14] Of WideChar;   // 'STRINGFILEINFO'
        Children: StringTable;
    End;

    VERSIONHEADER = Packed Record
        wLength: Word;
        wValueLength: Word;
        wType: Word;
        szKey: Array[0..16] Of WideChar;   // …
Run Code Online (Sandbox Code Playgroud)

delphi binary winapi patch versioninfo

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