小编Roy*_*rau的帖子

检查变量是否可迭代?

有没有办法检查任意变量类型是否可迭代?

那么要检查它是否有索引元素,或者我可以实际循环它的孩子?(例如使用foreach?)

是否可以为此创建通用模板?

我在搜索时找到了其他编程语言的技巧.然而,仍然必须找到如何在C++中做到这一点.

c++ arrays iterable

25
推荐指数
5
解决办法
6740
查看次数

覆盖继承的默认支持对象(如dict,list)的嵌套JSON编码

我已经设置了一些我自己的类,这些类是从字典中继承的,就像它们一样.然而,当我想将它们编码为JSON(使用Python)时,我希望它们能够以一种我可以将它们解码回原始对象而不是dict的方式进行序列化.

所以我想支持我自己的类的嵌套对象(从dict继承).

我尝过这样的东西:

class ShadingInfoEncoder(json.JSONEncoder):
    def encode(self, o):
        if type(o).__name__ == "NodeInfo":
            return '{"_NodeInfo": ' + super(ShadingInfoEncoder, self).encode(o) + '}'
        elif type(o).__name__ == "ShapeInfo":
            return '{"_ShapeInfo": ' + super(ShadingInfoEncoder, self).encode(o) + '}'
        elif type(o).__name__ == "ShaderInfo":
            return '{"_ShaderInfo": ' + super(ShadingInfoEncoder, self).encode(o) + '}'

        return super(ShadingInfoEncoder, self).encode(o)
Run Code Online (Sandbox Code Playgroud)

和:

class ShadingInfoEncoder(json.JSONEncoder):
    def encode(self, o):
        if isinstance(o, NodeInfo):
            return '{"_NodeInfo": ' + super(ShadingInfoEncoder, self).encode(o) + '}'
        elif isinstance(o, ShapeInfo):
            return '{"_ShapeInfo": ' + super(ShadingInfoEncoder, self).encode(o) + '}'
        elif isinstance(o, ShaderInfo): …
Run Code Online (Sandbox Code Playgroud)

python recursion encoding json nested

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

带浮点数组的std :: make_pair(float2,unsigned int)

我有一个用'float2,unsigned int'对模板化的向量,如:

std::vector<std::pair<float2, unsigned int>> myVec;
Run Code Online (Sandbox Code Playgroud)

然后我试图在向量中添加这样一对:

unsigned int j = 0;
float2 ab = {1.0, 2.0};
myVec.push_back(std::make_pair(ab, j));
Run Code Online (Sandbox Code Playgroud)

这是我期望它应该工作的方式,虽然当我尝试编译它时我得到错误:

1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\utility(163): error C2536: 'std::_Pair_base<_Ty1,_Ty2>::std::_Pair_base<_Ty1,_Ty2>::first' : cannot specify explicit initializer for arrays
1>          with
1>          [
1>              _Ty1=float2 ,
1>              _Ty2=unsigned int
1>          ]
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\utility(166) : see declaration of 'std::_Pair_base<_Ty1,_Ty2>::first'
1>          with
1>          [
1>              _Ty1=float2 ,
1>              _Ty2=unsigned int
1>          ]
1>          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\utility(247) : …
Run Code Online (Sandbox Code Playgroud)

c++ arrays std-pair

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

将 QMenu 标签设置为粗体而不影响其子项

我正在尝试更改 QMenu 上标签/文本的样式和/或字体,而不影响它的子项。我使用 PySide 在 Python 中执行此操作(其工作方式与 Qt 类似)。

我试过了:

menu = QtGui.QMenu()
f = menu.font()
f.setBold(True)
menu.setFont(f)
Run Code Online (Sandbox Code Playgroud)

menu = QtGui.QMenu()
menu.setStyleSheet("QMenu{font-weight: bold;}")
Run Code Online (Sandbox Code Playgroud)

这两者都不会更改菜单本身的标签,但会对其所有子项执行此操作。

我更愿意直接在 QMenu (或另一个类,如果它的行为类似并且使其成为可能)上设置样式,而不是在其父级上应用样式表。

目标

我的想法是,我有一个带有各种子菜单的菜单(这些子菜单在某种程度上是基于服务器上的文件夹的动态),其中一些需要是粗体,一些是斜体。因此,我想动态添加这些子 QMenu 并相应地设置它们的样式。

qt qt4 pyside python-2.7

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

标签 统计

arrays ×2

c++ ×2

encoding ×1

iterable ×1

json ×1

nested ×1

pyside ×1

python ×1

python-2.7 ×1

qt ×1

qt4 ×1

recursion ×1

std-pair ×1