Qt窗口屏幕居中顯示(有專門的QDesktopWidget,先計算后顯示)


   窗口的屏幕居中顯示問題,在各開發工具中原理相同,首先使用特定的方法得到顯示屏幕的寬度和高度,再根據窗口本身的寬度和高度計算出窗口的左上角坐標位置.

   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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM