隐藏分隔线使用如下代码有时会不起作用
self.dataTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
可以试试使用set方法
1
[self.dataTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
隐藏分隔线使用如下代码有时会不起作用 self.dataTableView.separatorStyle = UITableViewCellSeparatorStyleNone;可以试试使用set方法1 [self.dataTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];转载于:https...
### 回答2:
Qt的
TableView
是一种常用的列表控件,它可以很方便地呈现数据,提供了丰富的用户交互功能。在一些需求场景中,我们可能需要对
TableView
中的某些行进行
隐藏
,比如根据特定的条件过滤、根据权限控制用户可见性等等。这时,如何让被
隐藏
的行显示出来呢?
Qt提供了QSortFilterProxyModel这个类,可以在模型层级上对数据操作进行控制。我们可以通过继承QSortFilterProxyModel类,实现自定义的数据过滤器,从而控制
TableView
中哪些行要显示,哪些行要
隐藏
。下面是一种基本的实现方式:
1.继承QSortFilterProxyModel类,重写filterAcceptsRow()方法,这个方法用于根据你的过滤条件返回true或false,在返回false的情况下,
TableView
中的对应行会被
隐藏
。
class MyProxyModel : public QSortFilterProxyModel
public:
MyProxyModel(QObject *parent = nullptr);
protected:
bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override;
bool MyProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
const QStandardItemModel* model = qobject_cast<const QStandardItemModel*>(sourceModel());
if (model && model->rowCount() > source_row)
// 通过自定义过滤条件控制显示和
隐藏
行
bool isHidden = ......
return !isHidden; // 返回true表示显示,false表示
隐藏
return true;
2.在程序中使用自定义的ProxyModel替换
TableView
原有的模型,然后通过设置ProxyModel的过滤条件,即可控制
TableView
中的行显示和
隐藏
。
QStandardItemModel *model = new QStandardItemModel;
// TODO: 初始化model数据
Q
TableView
*
tableView
= new Q
TableView
;
tableView
->setModel(model);
MyProxyModel *proxyModel = new MyProxyModel;
proxyModel->setSourceModel(model);
// 设置过滤条件
proxyModel->setFilterKeyColumn(0); // 以第一列数据为过滤条件
proxyModel->setFilterRegExp(QRegExp("^FILTER_ME_OUT", Qt::CaseInsensitive)); // 过滤掉以"FILTER_ME_OUT"开头的字符串
tableView
->setModel(proxyModel);
通过以上步骤,我们就能够很方便地实现
TableView
中的行
隐藏
和显示了。当过滤条件改变时,只需要重新设置ProxyModel的过滤条件即可。注意,在过滤ProxyModel时,
TableView
中的行数可能与原模型不一致,因此在对行数据进行操作时,需要先将行号转化为原模型中的行号。
### 回答3:
Qt的
TableView
是一个用于显示数据的控件,它可以将数据以制表格的形式展示出来,方便用户查看和操作。有时候我们需要
隐藏
一些行,比如一些敏感的数据或者不必要的信息,但是有些时候我们又需要显示出这些被
隐藏
的行。下面我将介绍几种方法来实现这个功能。
1.使用setRowHidden函数
TableView
提供了一个名为setRowHidden的函数,这个函数可以设置指定行是否显示。我们可以用这个函数来实现显示被
隐藏
的行,具体方法如下:
```cpp
//显示指定行
tableView
->setRowHidden(row, false);
2.使用setItemDelegate函数
TableView
提供了一个名为setItemDelegate的函数,这个函数可以设置行的代理。我们可以用这个函数来实现显示被
隐藏
的行,具体方法如下:
```cpp
//创建一个QStyledItemDelegate的实例
QStyledItemDelegate *delegate = new QStyledItemDelegate(
tableView
);
//设置代理
tableView
->setItemDelegateForRow(row, delegate);
3.使用QSortFilterProxyModel
QSortFilterProxyModel是一个用于排序和过滤模型的代理模型。我们可以将这个代理模型应用到
TableView
上,然后通过设置它的filter方法来显示被
隐藏
的行,具体方法如下:
```cpp
//创建一个QSortFilterProxyModel的实例
QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel(this);
//设置原始模型
proxyModel->setSourceModel(originalModel);
//设置过滤器
proxyModel->setFilterRegExp(QRegExp("", Qt::CaseInsensitive));
proxyModel->setFilterKeyColumn(0);
//将代理模型应用到
TableView
上
tableView
->setModel(proxyModel);
以上三种方法都可以实现显示被
隐藏
的行,根据具体需求选择合适的方法即可。在使用时需要注意控件设置是否开启了verticalScrollBar。开启后,行被
隐藏
时需要滑动才能看到全部内容。