C++ QTableWidget使用父级可用大小

C++ QTableWidget使用父级可用大小,c++,qt,qwidget,qtablewidget,C++,Qt,Qwidget,Qtablewidget,我添加了一个QTableWidget。我尝试了不同的方法将其添加到布局中,但QTableWidget始终保持其默认大小。 当然,我可以设置“Minimumwidth”,但我希望QTableWidget将使用整个可用空间,就像其他小部件一样 this->horizontalHeader()->hide(); this->verticalHeader()->hide(); this->setRowCount(m_numRows); this-&g

我添加了一个QTableWidget。我尝试了不同的方法将其添加到布局中,但QTableWidget始终保持其默认大小。 当然,我可以设置“Minimumwidth”,但我希望QTableWidget将使用整个可用空间,就像其他小部件一样

this->horizontalHeader()->hide();
    this->verticalHeader()->hide();
    this->setRowCount(m_numRows);
    this->setColumnCount(m_numCols);
    this->horizontalHeader()->setStretchLastSection(true);
    this->verticalHeader()->setDefaultSectionSize(12);
    this->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
我也试过了

 this->setSizePolicy(QSizePolicy::Maximum,QSizePolicy::Maximum);

QTableWidget使用整个可用空间的秘诀是什么?

大多数情况下,您将向
QLayout
实例添加一个小部件,作为小部件与其父小部件之间的中介,以自动处理小部件相对于其父小部件的定位和大小调整。例如,下面展示了如何为
QTableWidget
实现这一点

#include <QtGui/QApplication>
#include <QtGui/QHBoxLayout>
#include <QtGui/QMainWindow>
#include <QtGui/QTableWidget>

int main(int argc, char** argv)
{
  QApplication app(argc, argv);

  QMainWindow mainWindow;
  mainWindow.setCentralWidget(new QWidget);

  QHBoxLayout layout;
  layout.addWidget(new QTableWidget(mainWindow.centralWidget()));

  mainWindow.centralWidget()->setLayout(&layout);
  mainWindow.show();

  return app.exec();
}
#包括
#包括
#包括
#包括
int main(int argc,字符**argv)
{
QApplication应用程序(argc、argv);
QMainWindow主窗口;
setCentralWidget(新的QWidget);
QHBox布局;
layout.addWidget(新的QTableWidget(mainWindow.centralWidget());
mainWindow.centralWidget()->setLayout(&layout);
mainWindow.show();
返回app.exec();
}
这个例子有点做作。主窗口的特殊之处在于,您可以将
QTableWidget
实例设置为中心窗口小部件,并且
QMainWindow
会自动对其进行良好的布局

为了演示
QLayout
的功能,将创建一个单独的中心小部件,并将表格小部件添加到中心小部件上的布局集中。如果您不在中心小部件上设置布局(注释掉
setLayout(…)
调用),您可能会得到与您已有的类似的行为


最后,
QHBoxLayout
可以替换为
QVBoxLayout
,当然可以获得相同的结果。只有在将多个小部件添加到同一布局中时,您选择的
QLayout
实现才有意义。

但是布局是什么呢???