QT 如何让程序界面在屏幕居中显示
在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()-
·
在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();
更多推荐


所有评论(0)