C++ 在QTableView中隐藏行或列时发出什么信号?

C++ 在QTableView中隐藏行或列时发出什么信号?,c++,qt,C++,Qt,由于QTableView具有公共函数setRowHidden()和setColumnHidden(),但如果人员A执行隐藏操作,人员B如何知道更改?是否有一个信号可以提供有关QTableView中几何体更改的信息 谢谢。不,信号没有发出,医生没有说任何关于它的事,但你可以自己做 只需创建QTableView的子类,覆盖setRowHidden和setcolumnhiden方法,调用原始方法,并在其中添加信号发射。类似于: MyTableView.h #include <QTableView

由于QTableView具有公共函数setRowHidden()和setColumnHidden(),但如果人员A执行隐藏操作,人员B如何知道更改?是否有一个信号可以提供有关QTableView中几何体更改的信息


谢谢。

不,信号没有发出,医生没有说任何关于它的事,但你可以自己做
只需创建
QTableView
的子类,覆盖
setRowHidden
setcolumnhiden
方法,调用原始方法,并在其中添加信号发射。类似于:

MyTableView.h

#include <QTableView>

class MyTableView : public QTableView
{
    Q_OBJECT
public:
    MyTableView(QWidget *parent = Q_NULLPTR);
    ~MyTableView();
    void setColumnHidden(int column, bool hide);
    void setRowHidden(int row, bool hide);


signals:
    void columnHidden(int column, bool hide);
    void rowHidden(int row, bool hide);

};

现在,您可以像调用原始方法一样调用重载方法。

怀着最愉快的心情,我终于找到了在tableView中观察行/列的隐藏/显示行为的解决方案。该方法仍然返回到信号/插槽机制。正是因为Qt系统中的术语很奇怪,所以有些概念并不是很直截了当和令人困惑

QTableView *tableView = new QTableView;
tableView->setRowHidden(0, true);

这将使tableView的第0行隐藏。此操作实际上只是调整行的部分大小。这样做的结果是节的大小为零,并发出signal sectionResized()。

我在QHeaderView中发现了一些信号,希望使用它们。我想这些信号可以帮助我解决这个问题。谢谢。你是说
QHeaderView
QTableView
没有
sectionResized
信号。是的,当tableview的视图更改时,垂直和水平QHeaderView会发出sectionResized信号。实际上,我认为节是访问和操作tableView渲染的唯一入口。
QTableView *tableView = new QTableView;
tableView->setRowHidden(0, true);