在Qt中咱們有時須要讓一個控件在窗口居中或是在父控件中居中,並且在窗口拉伸時仍然保持正中央的位置。這裏介紹一種方法,用到了主窗口的響應函數resizeEvent(QResizeEvent* event),這個響應函數在窗口的大小改變時會自動調用,該函數以下:函數
void MainWindow::resizeEvent(QResizeEvent* event) { QMainWindow::resizeEvent(event); // Your code here }
須要注意的是,在主程序窗口生成時,會首先調用下這個函數,這個函數能夠返回主窗口的大小,可是不能準確的返回上面的控件的大小,這多是個bug,因此咱們若是想要找到上面的一個控件的正中間的位置,須要根據主窗口的大小的值來定位中間控件的中心。ui
void MainWindow::resizeEvent(QResizeEvent* event) { QMainWindow::resizeEvent(event); // Your code here int width = ui->centralWidget->width(), height = ui->centralWidget->height(); ui->item->move(width * 0.25 - 80, (height - 320) / 2 - 8); ui->item->move(width * 0.25 - 80, (height - 320) / 2 - 8); }