我是Qt的新手,我刚刚成功地使QTableView与我的模型一起工作。它有固定的3列。当我打开一个窗口时,它看起来不错,但当我调整窗口大小时,QTableView本身也会调整大小,但列的宽度保持不变。有没有内置的方法使它工作?我希望列的大小适合QTableView的边缘,每次窗口调整大小。
a0x5cqrl1#
这段代码平均拉伸每一列,使它们适合表格的宽度。
table->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
文件:
i7uq4tfw2#
有一个头标志来确保QTableView的最后一列在调整大小时填充其父列。你可以这样设置它:
table_view->horizontalHeader()->setStretchLastSection(true);
但是,这并不会按比例调整其他列的大小,如果你也想这样做,你可以在你的父列的resizeEvent中处理它:
void QParent::resizeEvent(QResizeEvent *event) { table_view->setColumnWidth(0, this->width()/3); table_view->setColumnWidth(1, this->width()/3); table_view->setColumnWidth(2, this->width()/3); QMainWindow::resizeEvent(event); }
QParent类是QMainWindow的子类。
3bygqnnd3#
窗口小部件QTableView、QTreeView及其派生类(如QTableWidget)有以下两个有用的方法:
QHeaderView* horizontalHeader() const; QHeaderView* verticalHeader() const;
如果打开类QHeaderView的文档,您会发现设置项视图的行标题或列标题的外观和行为的方法。您可以通过以下方法之一解决问题:
QTableView *table = new QTableView(); table->horizontalHeader()->setStretchLastSection(true);
QTableView *table = new QTableView(); table->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
ymzxtsji4#
在PyQt5中,你可以在table_widget中完成以下操作:
header = table_widget.horizontalHeader() header.setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents)
4条答案
按热度按时间a0x5cqrl1#
这段代码平均拉伸每一列,使它们适合表格的宽度。
文件:
i7uq4tfw2#
有一个头标志来确保QTableView的最后一列在调整大小时填充其父列。你可以这样设置它:
但是,这并不会按比例调整其他列的大小,如果你也想这样做,你可以在你的父列的resizeEvent中处理它:
QParent类是QMainWindow的子类。
3bygqnnd3#
窗口小部件QTableView、QTreeView及其派生类(如QTableWidget)有以下两个有用的方法:
如果打开类QHeaderView的文档,您会发现设置项视图的行标题或列标题的外观和行为的方法。您可以通过以下方法之一解决问题:
正如Davy Jones提到的。
作为 * 模式 *,您可以设置QHeaderView::Stretch或QHeaderView::ResizeToContents。
不幸的是,这种方法有一个缺点-应用后,您将无法手动(在GUI中)或通过编程方式更改列(或行)的大小。
ymzxtsji4#
在PyQt5中,你可以在table_widget中完成以下操作: