Qt視窗螢幕置中顯示

來源:互聯網
上載者:User

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

   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 <QtCore/QtCore>

2 不能將參數 1 從“QDesktopWidget *”轉換為“QWidget *”

  請引入: #include <QtGUI/QtGUI>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.