QT 自适应不同分辨率显示器

问题

在不同分辨率的电脑上运行同一个QT程序,有时会出现软件窗体太小或太大的问题,显然设置单一固定的窗口尺寸是不合适。虽然窗口可以设置手动拉伸缩放,但为了软件一打开就以合适的大小显示,就必须根据显示器的分辨率做调整。

方法

1.要做到自适应显示,首先UI设计时就需要对各个控件进行布局设置,即充分利用下面这些QT的布局工具,否则内部的控件大小不会随着改变。
在这里插入图片描述
2.在主UI类的构造函数里调用下面的函数

//remainH 窗体在高度方向上给屏幕的留余尺寸
void setAppSize(int remainH)
{
	//首先获取屏幕尺寸信息
	QDesktopWidget *deskTopWidget = QApplication::desktop();
	QRect deskRect = deskTopWidget->availableGeometry();
	
 	//设置程序尺寸(我的界面需要适应高度)
 	int titleBarH = style()->pixelMetric(QStyle::PM_TitleBarHeight); 	// 获取标题栏高度(WIndow自带)
 	int appH = deskRect.height() - remainH - titleBarH;	 		
 	int appW = appH*this->width() / this->height();	//根据软件的宽高比例
 	this->setFixedSize(appW, appH);  		//注意:此处设置的高度是不包含标题栏
 	setGeometry((deskRect.width() - appW) / 2, remainH / 2 + titleBarH, appW, appH);	//设置程序窗体在桌面的显示位置
}

说明:

  • 上面的函数是我精减后的,删除了centWidget里控件的尺寸设置。它对软件的Frame尺寸进行了重新的定义,其实只要已经做过布局设置,就应该可以达到你想要的效果。
  • 该函数认为屏幕宽度是足够的,如果你软件的长宽比相反或者竖屏显示器,则可能要考虑长度方向,可以在此基础上优化。
  • 6
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值