小编Jer*_*ner的帖子

如何声明多个QML属性而不单独处理每个属性?

我有一个玩具QML应用程序(Qt 5.7),它由以下QML页面和一些C++代码组成,允许QML在音频设备上订阅某个状态并在QML GUI中反映该状态.玩具QML看起来像这样:

import QtQuick 2.6
import QtQuick.Controls 1.5
import QtQuick.Window 2.2

Item {
   id: deviceState

   property bool mute1: false
   property bool mute2: false
   property bool mute3: false
   property bool mute4: false

   Component.onCompleted: {
      // Call out to C++ land, to tell the server what 
      // control points we are interested in tracking the state of
      topLevelWindow.subscribeToControlPoints("Input 1-4 Mute", deviceState);
   }

   // Called by C++ land to tell us the current state of
   // a control point we previously subscribed …
Run Code Online (Sandbox Code Playgroud)

qt properties qml

2
推荐指数
1
解决办法
1867
查看次数

如何让Python使用包含冒号的路径?

我有一个包含嵌入式Python 2.6解释器的程序.当我调用解释器时,我调用PySys_SetPath()来设置解释器的import-path到我的可执行文件旁边安装的子目录,这些子目录包含我的Python脚本文件......像这样:

PySys_SetPath("/path/to/my/program/scripts/type1:/path/to/my/program/scripts/type2");
Run Code Online (Sandbox Code Playgroud)

(除了根据程序可执行文件的当前位置动态生成路径字符串,而不是如上例所示的硬编码)

这工作正常......除非聪明的用户决定在我的名称中包含冒号的文件夹下安装我的程序.在这种情况下,我的PySys_SetPath()命令最终看起来像这样(注意存在名为"path:to"的文件夹):

PySys_SetPath("/path:to/my/program/scripts/type1:/path:to/my/program/scripts/type2");
Run Code Online (Sandbox Code Playgroud)

...这打破了我所有的Python脚本,因为现在Python在"/ path"和"to/my/program/scripts/type1"而不是"/ path:to/myprogram/scripts/type1"中查找脚本文件",所以没有任何导入语句有效.

我的问题是,除了告诉用户在文件夹名称中避免冒号之外,是否有任何解决此问题的方法?

我查看了Python/sysmodule.c中的makepathobject()函数,它似乎不支持任何类型的引用或转义来处理文字冒号....但也许我错过了一些细微差别.

python escaping path colon

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

perl就地搜索和替换,但仅在与第二个模式匹配的行上

今天,我了解了如何使用Perl在一个或多个文件中进行搜索和替换。例如,我可以这样做:

perl -i -p -e "s/Sydney/Moscow/g" cities.txt
Run Code Online (Sandbox Code Playgroud)

...,然后完成操作,city.txt将被就地修改,这样字符串“ Sydney”的所有实例都将被“ Moscow”替换。

很好,但是我想更多地控制:特别是,我希望搜索和替换操作在以字符串“ HomeCities:”开头的行上发生

例如,如果在运行命令之前,city.txt看起来像这样:

HomeCities:   Dublin, Sydney, Los Angeles, Chicago
AwayCities:   New York, Melbourne, Sydney, Oakland
Run Code Online (Sandbox Code Playgroud)

...然后在命令完成后,将如下所示:

HomeCities:   Dublin, Moscow, Los Angeles, Chicago
AwayCities:   New York, Melbourne, Sydney, Oakland
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以编写带有明确的每行for循环和每行逻辑的脚本或程序呢?

regex perl

1
推荐指数
2
解决办法
354
查看次数

如何制作跟踪/控制任何布尔属性的QML切换按钮

我今天的QML/QtQuick练习是制作一个小ToggleButton小部件,我可以实例化它来监视指定的布尔QML属性的状态,并且当我点击ToggleButton时也切换该属性的状态.

到目前为止,我有我的ToggleButton组件:

// Contents of ToggleButton.qml
import QtQuick 2.2
import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 1.4

Button {
    property bool isActive: false

    onClicked: {
        isActive = !isActive;
    }

    style: ButtonStyle {
        background: Rectangle {
            border.width: control.activeFocus ? 2 : 1
            border.color: "black"
            radius: 4
            color:  isActive ? "red" : "gray";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

....这是我的小测试工具,用于查看它是否按照我想要的方式工作:

// Contents of main.qml
import QtQuick 2.6
import QtQuick.Window 2.2

Window {
   visible: true
   width: 360
   height: 360

   Rectangle {
      property bool lighten: false;

      id:blueRect
      x: 32; …
Run Code Online (Sandbox Code Playgroud)

binding qt qml qtquick2

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

有人可以解释这个意外的Python导入行为吗?

我从Python 2.6.1中遇到了一些我没想到的行为.以下是重现问题的一些简单代码:

---- ControlPointValue.py ------
class ControlPointValue:
   def __init__(self):
      pass

---- ControlPointValueSet.py ----
import ControlPointValue

---- main.py --------------------
from ControlPointValue import *
from ControlPointValueSet import *

val = ControlPointValue()
Run Code Online (Sandbox Code Playgroud)

....这是我运行main.py时遇到的错误(在OS/X Snow Leopard下,如果重要的话):

jeremy-friesners-mac-pro-3:~ jaf$ python main.py 
Traceback (most recent call last):
  File "main.py", line 4, in <module>
    val = ControlPointValue()
TypeError: 'module' object is not callable
Run Code Online (Sandbox Code Playgroud)

有人能解释一下这里发生了什么吗?Python是否因为类名与文件名相同而感到困惑?如果是这样,解决问题的最佳方法是什么?(我更喜欢让我的python文件以它们中定义的类命名)

谢谢,杰里米

python import

0
推荐指数
1
解决办法
321
查看次数

为什么这个模板化函数没有对数组进行零初始化编译?

我正在尝试编写一个简单的模板化函数,它将数组的所有成员初始化为零(或者如果数组是一个对象数组,则将其初始化为默认构造状态).这是我写的:

template<typename T, int size> inline void ClearTheArray(T[size] theArray) 
{
   for (size_t i=0; i<size; i++) theArray[i] = T();
}
Run Code Online (Sandbox Code Playgroud)

...我的想法是,我可以将任何数组重置为其默认构造/全零状态,如下所示:

int myArray[6] = {1,2,3,4,5,6};
ClearTheArray(myArray);
// myArray now contains all zeroes

int * somePointer = myArray;
ClearTheArray(somePointer);  // compile error: somePointer doesn't contain array length info
Run Code Online (Sandbox Code Playgroud)

但是,上面没有编译; 相反,我theArray在正式参数列表的第一个实例中得到语法错误("expected')'").我在这做错了什么?有没有办法做到这一点?

c++ templates

0
推荐指数
1
解决办法
49
查看次数

如何为扑克游戏生成 2,598,960 手牌(有效方式)

使用选择方法 nPk(即 nPk = n!/(nk)!*k!)计算 52 副牌中的扑克手总数(即每手五张牌),即 2,598,960 手可能。我想做的是生成所有可能的情况(即 2,598,960 手)。我想到的唯一方法是随机生成一个手并将其添加到一个向量中。每次添加手牌时,我都会检查它是否已经存在,如果存在,则继续生成随机手牌。这当然会奏效,但我正在为此寻找更快、更优雅的方法。一手牌的顺序并不重要。这是一个最小的工作示例,可以节省您的时间。

#include <iostream>
#include <string>
#include <vector>
#include <ctime>
using namespace std;

const int SUIT_MAX(4);
const int RANK_MAX(13);
const int HAND_SZ(5);
const std::string SUIT[SUIT_MAX]  = {"S", "H", "D", "C"};
const std::string RANK[RANK_MAX]  = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};

class Card
{
public:
    Card(const string &suit, const string &rank) { m_card = rank + suit; }
    std::string print() const { return m_card; }
private:
    string m_card;
};

class Hand
{
public:
    Hand(const vector<Card>& cards) 
    { …
Run Code Online (Sandbox Code Playgroud)

c++

0
推荐指数
1
解决办法
69
查看次数

标签 统计

c++ ×2

python ×2

qml ×2

qt ×2

binding ×1

colon ×1

escaping ×1

import ×1

path ×1

perl ×1

properties ×1

qtquick2 ×1

regex ×1

templates ×1