列自动加强QTableView的大小

发布于 2025-02-04 11:53:52 字数 205 浏览 1 评论 0 原文

我刚刚设法使 qtableView 与我的模型一起使用。它已固定3列。当我打开一个窗口时,看起来还可以,但是当我调整窗口大小时, qtableView 本身会大小,但是列的宽度保持不变。

我希望列调整大小以适合 qtableView 每次调整窗口大小时。

有什么内置的方法可以使其起作用吗?

I have just managed to make a QTableView work with my model. It has fixed 3 columns. When I open a window, it looks ok, but when I resize the window, the QTableView itself gets resized, but columns' width remains the same.

I want columns to resize to fit the edges of QTableView every time the window gets resized.

Is there any built-in way to make it work?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

尘世孤行 2025-02-11 11:53:52

此代码同样伸展每列,以便它们适合表的宽度。

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

docs:

This code equally stretches each column so that they fit the table's width.

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

Docs:

弄潮 2025-02-11 11:53:52

有一个标头标志,以确保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的子类。

There is a header flag to ensure that the QTableView's last column fills up its parent if resized. You can set it like so:

table_view->horizontalHeader()->setStretchLastSection(true);

However, that does not resize the other columns proportionately. If you want to do that as well, you could handle it inside the resizeEvent of your parent thusly:

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 class is subclass of QMainWindow.

她比我温柔 2025-02-11 11:53:52

小部件 qtableview qtableWidget )具有这两种有用的方法:

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

如果您打开了类的文档 qheaderview ,您将找到用于设置“项目视图”行或列标头的外观和行为的方法。您可以通过以下一种方法之一解决问题:


  1. AS
    Davy Jones 提到。

    示例:

      qtableView *table = new qtableView();  
    table-> yrizontalheader() - > setstretchlastsection(true);
     

  2. 作为模式您可以设置qheaderview :: strenth或qheaderview :: resizetocontents。
    不幸的是,此方法有一个缺点 - 应用后您将无法手动(以GUI)或编程方式更改列(或行)的大小。

    示例:

      qtableView *table = new qtableView();  
    table-> yrizontalheader() - > setResizemode(qheaderview :: stract);
     

Widgets QTableView, QTreeView and their derived classes (such as QTableWidget) have this two usefull methods:

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

If you open documentation for a class QHeaderView, you will find methods that set up appearance and behavior of row or column header for item views. You can resolve your problem by one of these methods:

  1. void QHeaderView::stretchLastSection( bool stretch )
    As Davy Jones mentioned.

    Example:

    QTableView *table = new QTableView();  
    table->horizontalHeader()->setStretchLastSection(true);
    
  2. void QHeaderView::setResizeMode( ResizeMode mode )
    As mode you can set QHeaderView::Stretch or QHeaderView::ResizeToContents.
    Unfortunately this method have a drawback - after it's apply you will not be able to change size of columns (or rows) manually (in GUI) or programmatically.

    Example:

    QTableView *table = new QTableView();  
    table->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
    
他不在意 2025-02-11 11:53:52

在pyqt5中,您可以通过以下方式在table_widget中实现此目标:

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

In PyQt5 you can achieve this in your table_widget by doing:

header = table_widget.horizontalHeader()
header.setSectionResizeMode(QtWidgets.QHeaderView.ResizeToContents)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文