2013-01-21 226 views
3

我有一個QMainWIndow,其中有一個小部件,其中一個是QTableView。如何根據窗口大小重新調整QMainWindow的內容

Main WIndow可調整大小。

如何自動調整窗口的內容,字體和所有內容,即當窗口被調整大小時,其內容也應該自動調整大小?

我很感激幫助,謝謝。

+1

你把你的小部件到一個佈局? – hank

+0

調整字體大小需要手動完成。但是這非常棘手,因爲調整字體大小可能會觸發窗口小部件和主窗口的新大小。 – UmNyobe

+0

@Hank - 我在窗口中有一個垂直框。在那個窗口中,我有3個小部件,1個使用網格佈局,並有QLablels,另一個是使用TableLayout的TableView。如果表格被調整大小,這些內容也應該調整大小...請告知。 – user1173240

回答

2

你應該把所有的小部件放入一個佈局中,當用戶對QMainWindow的大小進行任何改變時,佈局會自動調整你的小部件在QMainWindow中的大小,你可以通過Qt Creator IDE和Coding 。

UPDATE:

如果Qt Creator中添加布局,佈局自動MOC文件,並沒有必要在他們的行爲通過編碼由用戶所做的任何更改編碼。

而是通過編碼在類的構造函數:

QVBoxLayout *layout = new QVBoxLayout(parent); 

layout->addWidget(widget1); 
layout->addWidget(widget2); 
layout->addWidget(widget3); 

this->setLayout(layout); 

但如果想改變QLabel的字體,這是由resizeEvent在QMainWindow中在主窗口的大小的任何變化進行的,因此,resizeEvent觸發,所以您使用此代碼:

mainwindow.h聲明resizeEvent

protected: 
    void resizeEvent(QResizeEvent* event); 

mainwindow.cpp實施resizeEvent

void MainWindow::resizeEvent(QResizeEvent *event) 
{ 
    MainWindow::resizeEvent(event); 
    if(this) 
    { 
     // QLabel process 
    } 
} 
+0

我有一個內部有3個小工具的垂直框。我應該向主WIndow添加布局嗎?如果是這樣,我應該選擇什麼佈局?我不想影響它現在的樣子。 – user1173240

+0

我做到了。沒有幫助。沒有任何字體或內容的大小調整。 – user1173240

+0

這很簡單,我不明白你想做什麼?你想改變你的字體大小?和你的小部件內容?這意味着內容?你使用哪個小部件?對於字體大小的變化,你必須使用QFont字體(「Arial」); 字體。參考setBold(真); this-> setFont(font); this-> setAlignment(Qt :: AlignCenter); –

相關問題