QTextOption :: alignment отбрасывает информацию - PullRequest
1 голос
/ 22 марта 2019

Почему 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...