コード例 #1
0
ファイル: qwidget_qpa.cpp プロジェクト: cedrus/qt
void QWidgetPrivate::updateFrameStrut()
{
    Q_Q(QWidget);
    if (q->data->fstrut_dirty) {
        if (QTLWExtra *te = maybeTopData()) {
            if (te->window) {
                if (const QPlatformWindow *pw = te->window->handle()) {
                    const QMargins margins = pw->frameMargins();
                    if (!margins.isNull()) {
                        te->frameStrut.setCoords(margins.left(), margins.top(), margins.right(), margins.bottom());
                        q->data->fstrut_dirty = false;
                    }
                }
            }
        }
    }
}
コード例 #2
0
QMargins MainPanel::FixRatioTransform(const QMargins &g)
{
    if(g.isNull())
        return g;
    Screen* s = ui->panel->CurrentPage()->ScreenWidget();

    QSize intend = (s->geometry() + g).size();

    int sum = g.left()+g.top()+g.right()+g.bottom();
    QSize except = _fixRatio.scaled(intend, (sum > 0 ? Qt::KeepAspectRatioByExpanding : Qt::KeepAspectRatio)) - s->size();

    QMargins ret;

    qreal h = g.left() + g.right();
    qreal v = g.top() + g.bottom();

    if(h)
    {
        ret.setLeft(g.left() / h * except.width());
        ret.setRight(g.right() / h * except.width());
    }
    else
        ret.setRight(except.width());

    if(v)
    {
        ret.setTop(g.top() / v * except.height());
        ret.setBottom(g.bottom() / v * except.height());
    }
    else
        ret.setBottom(except.height());


    return ret;

}