窗口居中 [无父窗口的情况]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <QDesktopWidget>
#include <QApplication>
#include <QCursor>
#include <QRect>
void SimplePopupDlg::MoveCenter()
{
QDesktopWidget* pDesktop = QApplication::desktop();
int iSCnt = pDesktop->screenCount();
for (int i = 0; i < iSCnt; i++)
{
QRect sRect = pDesktop->screenGeometry(i);
QRect cRect = this->geometry();
if (sRect.contains(QCursor::pos()))
{
int _x = (sRect.width() - this->width()) / 2;
int _y = (sRect.height() - this->height()) / 2;
move(_x + sRect.x(), _y + sRect.y());
break;
}
}
}
上述代码,对于多屏的情况同样适用,使用QT桌面窗体类,可以获取到屏幕数量,并且获取到每一个屏幕的信息,根据当前鼠标的位置判断在哪一块屏幕上,然后再获取居中的尺寸即可。
另外,提供一个项目开发过程中的小思路,虽然QDialog已经是一个通用弹框类了,但是在一个项目的开发过程中,如果有各种各样的弹框,且有很多人,在很多位置都会弹框,那么这个时候就非常推荐开发人员,针对自己的项目封装出来一层Dialog,以后这个弹框要改变图标、居中、自动关闭、调整样式、行为记录等,都会变得很方便,甚至还能够检测是否有一些弹框在系统运行过程中没有被释放。
我是这么做的,不亦乐乎。