QT5根据分辨率和控件位置

根据分辨率保持横纵比初始化窗口大小

//缩小倍数   
   float  minification=0.2f;
//获取主屏幕分辨率
   QScreen *screen=QGuiApplication::primaryScreen();
    int screenWith=screen->availableGeometry().width();
    int screenHeight=screen->availableGeometry().height();
//根据横纵比初始化窗口大小
    int defaultWith=screenWith-screenWith*minification;
    int defaultHeight=defaultWith*screenHeight/screenWith;
    this->resize(defaultWith,defaultHeight);

只需修改coefficient系数即可。如0.5缩小一倍,0.1缩小1/10倍

缩小0.2被效果

image.png

这样做的好处是无需管屏幕到底多大,设置的窗口大小也不会因为其他设备分辨率小而显示异常。

获取子控件在全局的位置

ui->widget_graph->mapToGlobal(ui->widget_graph->pos());

鼠标相对控件的距离

ui->widget_graph->mapFromGlobal(QCursor::pos());

控件相对于父控件的距离

ui->widget_graph->mapFromGlobal(this->pos());

你可能感兴趣的:(QT5根据分辨率和控件位置)