PyQt中QBarSet多值赋值时<<运算符的作用解析
QBarSet中连续<<运算符的作用及Python兼容问题
问题背景
在Qt Charts的开发示例中,出现了这样的代码:
set1 = QBarSet("Bob") set2 = QBarSet("Tom") set1 << 5 << 0 << 0 << 4 << 0 << 3 set2 << 3 << 5 << 8 << 4 << 8 << 5
这里的<<在Python中原是左移运算符,但用法和Qt官方C++示例一致,需要明确两个问题:
- 该场景下连续使用
<<的作用是什么? - Python能否直接使用此类写法?
解答
- 连续
<<的作用
Qt的QBarSet类重载了<<运算符(C++中为运算符重载,PyQt/PySide中通过__lshift__特殊方法实现),作用是向当前QBarSet对象中追加单个数值。
之所以能连续调用,是因为每次执行set << value后,会返回set对象本身,因此可以链式调用,等同于依次执行:
set1 << 5 set1 << 0 set1 << 0 set1 << 4 set1 << 0 set1 << 3
最终实现批量给QBarSet添加多个数据的效果。
- Python能否直接使用该写法
完全可以。PyQt和PySide作为Qt的Python绑定库,完整复刻了Qt C++ API的运算符重载逻辑,包括QBarSet的<<运算符。上述代码可以直接在Python环境中运行,行为和C++版本完全一致,不需要做任何转译处理。
内容的提问来源于stack exchange,提问作者ODScience
相关产品推荐
相关产品推荐

