我的主页

快递查询 :http://m.kuaidi100.com     爱快递查询 :http://www.aikuaidi.cn/              

http://www.qtcn.org/bbs/u/168050  [收藏] [复制]

w642833823

  • 10

    关注

  • 65

    粉丝

  • 42

    访客

  • 等级:新手上路
  • 总积分:43
  • 保密,2011-12-07

最后登录:2024-03-28

更多资料

日志

关于缩放的处理收藏

2021-07-25 02:27
//处理缩放
#include <QScreen>
    //处理缩放
      public Q_SLOTS:
    void  onLogicalDotsPerInchChanged(qreal dpi);
private:
    void findChild(const QObject &o);
    int scaleUI(int spec);
private:

    double m_preRate;
    double m_scaleFromPreRate;



//处理缩放
    ui->next->resize(scaleUI(93), scaleUI(28));
    ui->play->resize(scaleUI(186), scaleUI(56));
    ui->tableWidget->resize(scaleUI(93), scaleUI((28)));
    QList<QScreen*> screens = QApplication::screens();
    if (screens.size() > 0) {
        QScreen* screen = screens[0];
        connect(screen, &QScreen::logicalDotsPerInchChanged, this, &Widget::onLogicalDotsPerInchChanged);
    }


//处理缩放
void Widget::onLogicalDotsPerInchChanged(qreal dpi)
{
    m_scaleFromPreRate = (double)dpi / 96 / m_preRate;
    m_preRate = (double)dpi / 96;
    findChild(*this);
}
void Widget::findChild(const QObject &o)
{
    for (int i=0; i<o.children().size(); ++i) {
        QWidget *pWidget = qobject_cast<QWidget *>(o.children().at(i));
        if (pWidget != nullptr) {
            qDebug() << pWidget->width() << pWidget->height();
            pWidget->resize(pWidget->width()*m_scaleFromPreRate, pWidget->height()*m_scaleFromPreRate);
            findChild(*(o.children().at(i)));
        }
    }
}
int Widget::scaleUI(int spec)
{
    double rate = 0;
    if (0 == (int)rate) {
        QList<QScreen*> screens = QApplication::screens();
        if (screens.size() > 0) {
            QScreen* screen = screens[0];
            double dpi = screen->logicalDotsPerInch();
            rate = dpi / 96.0;
            if (rate < 1.1) {
                rate = 1.0;
            } else if (rate < 1.4) {
                rate = 1.25;
            } else if (rate < 1.6) {
                rate = 1.5;
            } else if (rate < 1.8) {
                rate = 1.75;
            } else {
                rate = 2.0;
            }
        }
    }
    m_preRate = rate;
    return int(spec * rate);
}
分类:QT|回复:0|浏览:588|全站可见|转载
 

Powered by phpwind v8.7 Certificate Copyright Time now is:03-28 18:20
©2005-2016 QTCN开发网 版权所有 Gzip disabled