我qt我添加了一个QTableWidget。我尝试了多种方法将其添加到布局中,但是QTableWidget始终具有其默认大小。 当然可以设置“最小宽度”,但我希望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一起使用的秘密是什么?
答案 0 :(得分:0)
大多数情况下,您会将小部件添加到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();
}
这个例子有点人为。主窗口的特殊之处在于,您可以将QTableWidget
实例设置为中央窗口小部件,并且QMainWindow
会自动将其很好地布置。
为演示QLayout
的功能,创建了一个单独的中央窗口小部件,并将表格窗口小部件添加到中央窗口小部件上的布局集。如果您不打算在中央小部件上设置布局(注释setLayout(...)
调用),则可能会得到与您已有的行为类似的行为。
最后,QHBoxLayout
可以用QVBoxLayout
代替,以达到相同的结果。仅当您将多个小部件添加到同一布局时,才开始选择选择QLayout
的哪种实现方式。