我有一个QMainWIndow,其中有一个小部件,其中一个是QTableView。如何根据窗口大小重新调整QMainWindow的内容
Main WIndow可调整大小。
如何自动调整窗口的内容,字体和所有内容,即当窗口被调整大小时,其内容也应该自动调整大小?
我很感激帮助,谢谢。
我有一个QMainWIndow,其中有一个小部件,其中一个是QTableView。如何根据窗口大小重新调整QMainWindow的内容
Main WIndow可调整大小。
如何自动调整窗口的内容,字体和所有内容,即当窗口被调整大小时,其内容也应该自动调整大小?
我很感激帮助,谢谢。
你应该把所有的小部件放入一个布局中,当用户对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
}
}
我有一个内部有3个小工具的垂直框。我应该向主WIndow添加布局吗?如果是这样,我应该选择什么布局?我不想影响它现在的样子。 – user1173240
我做到了。没有帮助。没有任何字体或内容的大小调整。 – user1173240
这很简单,我不明白你想做什么?你想改变你的字体大小?和你的小部件内容?这意味着内容?你使用哪个小部件?对于字体大小的变化,你必须使用QFont字体(“Arial”); 字体。参考setBold(真); this-> setFont(font); this-> setAlignment(Qt :: AlignCenter); –
你把你的小部件到一个布局? – hank
调整字体大小需要手动完成。但是这非常棘手,因为调整字体大小可能会触发窗口小部件和主窗口的新大小。 – UmNyobe
@Hank - 我在窗口中有一个垂直框。在那个窗口中,我有3个小部件,1个使用网格布局,并有QLablels,另一个是使用TableLayout的TableView。如果表格被调整大小,这些内容也应该调整大小...请告知。 – user1173240