PDA

View Full Version : Opposite of |= operation



JPNaude
16th November 2009, 11:50
Hi

This is probably a simple question, but I can't figure out how to do it. I have a bitwise enum. I know that you set one of the bits as follows (example taken out of a table model implementation:



if (is_editable)
item_flags |= Qt::ItemIsEditable;
//else
// item_flags (what to do here) Qt::ItemIsEditable;


I've searched the web but couldn't find any solutions, or I missed them.
I looked at the QWidget::setAttribute() function implementation but it does quite a few things in there and I'm hoping there is a simpler way to do it.

Thanks for your time.
Jaco

yogeshgokul
16th November 2009, 11:54
Do nothing in else.

JPNaude
16th November 2009, 12:17
I agree but it will only work in the following scenario won't it:



item_flags = 0;

if (is_editable)
item_flags |= Qt::ItemIsEditable;
//else
// item_flags (what to do here) Qt::ItemIsEditable;


I need to be able to remove that flag is it was set, for example:



item_flags = Qt::ItemIsEditable;

if (is_editable)
item_flags |= Qt::ItemIsEditable;
//else
// item_flags (what to do here) Qt::ItemIsEditable;


Any ideas?
Thanks
Jaco

squidge
16th November 2009, 12:24
item_flags &= ~Qt::ItemIsEditable;

yogeshgokul
16th November 2009, 12:26
I need to be able to remove that flag is it was set, for example:


This is called bit masking.
To unset a flag (zero-out a bit or set a bit to zero) flags & ~flagbitN.
Enjoy :D

JPNaude
16th November 2009, 12:33
Brilliant! Thank you will give it a go.