2013-01-21 190 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); –

相关问题