窗口的屏幕居中顯示問題,在各開發工具中原理相同,首先使用特定的方法得到顯示屏幕的寬度和高度,再根據窗口本身的寬度和高度計算出窗口的左上角坐標位置.
Qt中可以采用兩種方法達到窗口的屏幕居中顯示:
方法一: 顯示前先計算出窗口顯示位子,並移到對應位子后再顯示窗口
int main(int argc, char *argv[])
{
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));
QApplication a(argc, argv);
QDesktopWidget *pDesk = QApplication::desktop();
CVxMainWindow w(pDesk);
w.move((pDesk->width() - w.width()) / 2, (pDesk->height() - w.height()) / 2);
w.show();
return a.exec();
}
在窗體類的構造方法中,如果使用 setFixedSize(800, 600); 設置了窗口的固定大小, 則運行程序時能達到窗口居中顯示效果, 否則窗口並不能按所期望的居中顯示在屏幕中,需要采用下面的方法,在移動和顯示窗口前重新設置下窗口的大小.
int main(int argc, char *argv[])
{
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));
QApplication a(argc, argv);
QDesktopWidget *pDesk = QApplication::desktop();
CVxMainWindow w(pDesk);
w.resize(800, 600);
w.move((pDesk->width() - w.width()) / 2, (pDesk->height() - w.height()) / 2);
w.show();
return a.exec();
}
方法二: 窗口顯示后再移動到合適的位子
int main(int argc, char *argv[])
{
QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));
QApplication a(argc, argv);
QDesktopWidget *pDesk = QApplication::desktop();
CVxMainWindow w(pDesk);
w.show();
w.move((pDesk->width() - w.width()) / 2, (pDesk->height() - w.height()) / 2);
return a.exec();
}
先顯示后移動容易產生窗口閃爍,本人不建議采用方法二.
注意:
1 使用QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));
請引入: #include
2 不能將參數 1 從“QDesktopWidget *”轉換為“QWidget *”
請引入: #include
http://blog.chinaunix.net/uid-20718335-id-364404.html