在QT中,软件界面居中显示的代码是这样子的:

常规居中显示代码:
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

	/* QtWidgetsDemo w;
	 w.show();*/

	QtWidgetsDemo w;
	w.move((a.desktop()->width() - w.width()) / 2, (a.desktop()->height() - w.height()) / 2);
	w.show();

    return a.exec();
}

但是,上述代码在遇到双屏(甚至更多屏幕),可能会遇到程序显示在犄角旮旯的地方。

原因也很简单:屏幕大小是用像素来计算,在单屏幕上并没有什么问题,但是在多屏下就有问题了。因为多屏下的像素是所有屏幕加起来,所以用上面的方法,程序界面位置是不可预料的。

居中显示的代码(加强版):
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QtWidgetsDemo w;
    int currentScreen = a.desktop()->screenNumber(&w);//程序所在的屏幕编号
    QRect rect = a.desktop()->screenGeometry(currentScreen);//程序所在屏幕尺寸
    w.move((rect.width() - w.width()) / 2, (rect.height() - w.height()) / 2);//移动到所在屏幕中间
    w.show();
    return a.exec();
}
其他跟屏幕相关的参考代码:
QDesktopWidget * desktop = QApplication::desktop();
 
//获取程序所在屏幕是第几个屏幕
int current_screen = desktop->screenNumber(this);
//获取程序所在屏幕的尺寸
QRect rect = desktop->screenGeometry(current_screen);
//获取所有屏幕总大小
QRect rectAll = desktop->geometry();
//获取所有屏幕的个数
int screen_count = desktop->screenCount();
//获取主屏幕是第几个
int prim_screen = desktop->primaryScreen();
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐