В фреймворке PyQt (и PySide тоже) часто встречается настройка чего-либо с помощью так называемых флагов.
widget.setWindowFlags(Qt.Window)
Взаимодействие нескольких флагов делается с помощью бинарных (или побитовых) операторов.
Несколько флагов можно указать с помощью оператора "|"
list_item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsEnabled)
исключить флаг из уже имеющегося набора можно так
list_item.setFlags(list_item.flags() ^ Qt.ItemIsEnabled)
Добавить новый флаг к имеющимся можно так
list_item.setFlags(list_item.flags() | Qt.ItemIsEnabled)
А проверка наличия делается так
is_enabled = item.flags() & Qt.ItemIsEnabled > 0
Почему именно так? Всё дело в том как именно работают побитовые операторы. Но об этом в следующем посте.
#qt
🚗✨ Exciting news from BMW! The new extended X3 is here, specially designed for the Chinese market! 🇨🇳
With a wheelbase stretched by 110 mm to an impressive 2975 mm (just like the European BMW X5), the overall length now reaches 4865 mm! 📏
Available in two versions: 25L and 30L, both equipped with an 8-speed automatic transmission and a powerful 2.0L turbo engine. Choose between 190 hp & 310 Nm or 258 hp & 400 Nm! 💪🔥
#BMW#X3#LuxurySUV#China#CarNews#Automotive#Innovation#Auto🚘🌟
🚗✨ Exciting news for Land Rover fans! The upcoming Discovery is set to embrace a more family-friendly design, possibly resembling a minivan! 🏡👨👩👧👦
As stated by Mark Cameron, this shift is aimed at boosting sales, especially with the Defender selling six times better in 2023. 📈💼
Stay tuned for the new generation expected in 2026! 🗓️🔄
#LandRover#Discovery#FamilyCar#MinivanStyle#CarNews#2026Release#Sports🌍🚙