c++ 列自动调整为QTableView的大小

91zkwejq  于 2022-12-27  发布在  其他
关注(0)|答案(4)|浏览(260)

我是Qt的新手,我刚刚成功地使QTableView与我的模型一起工作。它有固定的3列。当我打开一个窗口时,它看起来不错,但当我调整窗口大小时,QTableView本身也会调整大小,但列的宽度保持不变。有没有内置的方法使它工作?我希望列的大小适合QTableView的边缘,每次窗口调整大小。

a0x5cqrl

a0x5cqrl1#

这段代码平均拉伸每一列,使它们适合表格的宽度。

table->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

文件:

  • QHeaderView::设置节调整大小模式
  • 请参见此处的调整大小模式。
i7uq4tfw

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的子类。

3bygqnnd

3bygqnnd3#

窗口小部件QTableViewQTreeView及其派生类(如QTableWidget)有以下两个有用的方法:

QHeaderView* horizontalHeader() const;
QHeaderView* verticalHeader() const;

如果打开类QHeaderView的文档,您会发现设置项视图的行标题或列标题的外观和行为的方法。您可以通过以下方法之一解决问题:

  1. void QHeaderView::拉伸最后部分(布尔拉伸)
    正如Davy Jones提到的。
  • 示例:*
QTableView *table = new QTableView();  
table->horizontalHeader()->setStretchLastSection(true);
  1. void QHeaderView::设置调整大小模式(调整大小模式)
    作为 * 模式 *,您可以设置QHeaderView::Stretch或QHeaderView::ResizeToContents。
    不幸的是,这种方法有一个缺点-应用后,您将无法手动(在GUI中)或通过编程方式更改列(或行)的大小。
  • 示例:*
QTableView *table = new QTableView();  
table->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
ymzxtsji

ymzxtsji4#

在PyQt5中,你可以在table_widget中完成以下操作:

header = table_widget.horizontalHeader()
header.setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents)

相关问题