#include <QDebug>
#include <QApplication>
#include <QFontMetrics>
#include <QTextOption>
#include <QWidget>
#include <QHBoxLayout>

void testFont() {
    QFont font("Arial", 21);
    //font.setItalic(m_attr.fontItalics);
    font.setStyleStrategy(QFont::NoAntialias);
    QFontMetricsF metric(font);
    QFontMetrics metricI(font);
    qDebug()<<"QFontMetrics";
    qDebug()<<" leading"<<metric.leading();
    qDebug()<<" ascent"<<metric.ascent();
    qDebug()<<" descent"<<metric.descent();
    qDebug()<<" ttl"<<metric.leading()+metric.ascent()+metric.descent();
    qDebug()<<" height"<<metric.height();
    qDebug()<<" lineSpacing"<<metric.lineSpacing()<<metricI.lineSpacing();
    qDebug()<<" capHeight"<<metric.capHeight();
    qDebug()<<" horizontalAdvance"<<metric.horizontalAdvance("0")<<metricI.horizontalAdvance("0");
    qDebug()<<" boundingRect"<<metric.boundingRect("0").width()<<metricI.boundingRect("0").width();
    qDebug()<<" Bearing"<<metric.leftBearing('0')<<metric.rightBearing('0');

}
void boundingRect() {
    QFont font("Arial", 18);
    font.setStyleStrategy(QFont::NoAntialias);
    QFontMetricsF metric(font);
    qDebug()<<"boundingRect";
    QRectF rrr(0,0,50,100);
    auto text = "aaa aa";
    qDebug()<<metric.boundingRect(rrr, Qt::TextWordWrap, text);
    qDebug()<<metric.boundingRect(rrr, Qt::TextWrapAnywhere, text);
    qDebug()<<metric.boundingRect(rrr, Qt::TextWordWrap | Qt::TextWrapAnywhere, text);

}
#include <QLabel>
#include <QScrollArea>
class TestWin : public QWidget {
public:
    TestWin(){
        resize(400, 100);
        auto hBox = new QHBoxLayout(this);
        hBox->setContentsMargins(100,0,0,0);
        aaa = new QLabel("Aaaaaaaaaaaaaaaaaaaaaaaa");
        aaa->setAutoFillBackground(true);
        QPalette pal;
        pal.setColor(QPalette::Window, Qt::darkGreen);
        aaa->setPalette(pal);
        aaa->setMinimumWidth(10);
        hBox->addWidget(aaa);

        bbb = new QLabel("B");
        bbb->setAutoFillBackground(true);
        pal.setColor(QPalette::Window, Qt::darkCyan);
        bbb->setPalette(pal);
        bbb->setMinimumWidth(1);

        auto poli = aaa->sizePolicy();
        poli.setHorizontalPolicy(QSizePolicy::Expanding);
        aaa->setSizePolicy(poli);
        bbb->setSizePolicy(poli);


        hBox->addWidget(bbb);
    }
    void mouseDoubleClickEvent(QMouseEvent *) override {
        qDebug()<<"sizeHint  "<<aaa->sizeHint()<<bbb->sizeHint();
        qDebug()<<"minHint   "<<aaa->minimumSizeHint()<<bbb->minimumSizeHint();
        qDebug()<<"sizePolicy"<<aaa->sizePolicy()<<bbb->sizePolicy();
        qDebug()<<"minSize   "<<aaa->minimumSize()<<bbb->minimumSize();
        qDebug()<<"maxSize   "<<aaa->maximumSize()<<bbb->maximumSize();
        qDebug()<<"size   "<<aaa->size()<<bbb->size();
    }
    QWidget *aaa;
    QWidget *bbb;
};
int tttmain(int argc, char *argv[]) {
    QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
    QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
    QApplication a(argc, argv);
    QFont font = a.font();
    font.setPointSize(14);
    a.setFont(font);

    TestWin w;
    w.show();
    return a.exec();
}