QWidget居中显示

转载请说明出处, 并附上原文链接http://blog.csdn.net/qq907482638/article/details/72189014.

问题描述

在Qt学习过程中,在让QDialog居中显示的时候, 出现了一点问题. 然而百度的都是大同小异. 都不行.不知道为什么, 难道是我的搜索姿势不对. 于是自己实现了居中显示的函数.

须知

  1. 以下函数只要继承QWidget都可以使用.
  2. 例如 QDialog, QPushButton( -v- 一个居中的”引爆按钮”)
  3. 关于坐标问题: qt窗口坐标原点是在”左上角”的.

这里写图片描述

    如图, (x2, y2)是我窗口的分辨率的一半
        无论目前我的窗口在什么位置,我只要把窗口原点设置为(x1, y1)就行了.
        所以目前我要获得(x1, y1)的值, 那就很简单啦.
        通过
         //app就是当前要居中的窗口
        appWindowWidth = app->geometry()->width();
        appWindowHeight = app->geometry()->height();
        x2 = 屏幕宽度 / 2
        y2 = 屏幕高度 / 2
        最后:
        x1 = x2 - appWindowWidth / 2
        y1 = y2 -appWindowHeight / 2
        然后把窗口中心设置为(x1, y1)就行了.

实现细节

void LoginDialog::setCentralDisplay()
{
    QDesktopWidget *screenResolution = QApplication::desktop();
    int appWindowWidth = this->geometry().width();
    int appWindowHeight = this->geometry().height();

    int center_y = screenResolution->height()/2 - appWindowHeight/2;
    int center_x = screenResolution->width()/2 - appWindowWidth/2;
    //此处的Width,Height不要被修改了(例如除以2了)
   //不然看起来不是居中的
    setGeometry(center_x, center_y, 
                appWindowWidth,appWindowHeight);

    //以下用于调试
    qDebug()<<"origin_width"<<screenResolution->width();
    qDebug()<<"origin_height"<<screenResolution->height();
    qDebug()<<"window_width"<<appWindowWidth;
    qDebug()<<"window_height"<<appWindowHeight;
    qDebug()<<"center"<<center_x;
    qDebug()<<"center"<<center_y;


}
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值