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