Почему QTextOption
не может хранить флаг Qt::AlignBaseline
?После некоторых исследований я обнаружил, что он хранится в битовом поле шириной 8 бит в QTextOption.Так как он имеет значение 0x100
, неудивительно, что флаг сброшен.
Предназначено ли это поведение? Я еще не выяснил, что Qt::AlignBaseline
точно, однако, согласно документации, это довольно обычный флаг вертикального выравнивания
#include <QDebug>
#include <QTextOption>
struct MyTextOption
{
int int_alignment : 8;
Qt::Alignment alignment;
};
int main()
{
const Qt::Alignment alignment = Qt::AlignLeft | Qt::AlignBaseline;
qDebug() << alignment; // Qt::AlignLeft|Qt::AlignBaseline
QTextOption option;
option.setAlignment(alignment);
qDebug() << option.alignment(); // Qt::AlignLeft|Qt::AlignLeading
MyTextOption my_option;
my_option.int_alignment = alignment;
qDebug() << static_cast<Qt::Alignment>(my_option.int_alignment);
// Qt::AlignLeft|Qt::AlignLeading
my_option.alignment = alignment;
qDebug() << my_option.alignment; // Qt::AlignLeft|Qt::AlignBaseline
}
Я использую Qt 5.12.