QTableView常用设置

QTableView的设置比较复杂,做项目的时候总是搞忘,以本文记录一下它的样式、布局等设置方式。


1、设置item布局

1.1、平均铺满

ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

在这里插入图片描述

1.2、最后一项铺满

ui->tableView->horizontalHeader()->setStretchLastSection(true);

在ui设计师也能设置。
在这里插入图片描述
在这里插入图片描述

2、交替背景色

2.1、行交替

ui->tableView->setAlternatingRowColors(true);

在这里插入图片描述
交替色可以通过样式表来设置。

QTableView::item:!alternate:!selected{
    background: yellow;    
}

QTableView::item:alternate:!selected{
    background: green;    
}

在这里插入图片描述

2.2、项交替

Qt没有提供项背景色交替的方法,需要自行实现,下面是一个例子。

auto model = new QStandardItemModel;
model->setRowCount(3);
model->setColumnCount(3);
for (int r = 0; r < 3; ++r) {
	for (int c = 0; c < 3; ++c) {
		auto index = model->index(r, c);
            
		if ((!(r % 2) && c % 2) || 
			(r % 2 && !(c % 2))) {
			model->setData(index, QColor(243, 243, 243), Qt::BackgroundRole);
		} else {
			model->setData(index, QColor(Qt::white), Qt::BackgroundRole);
		}      
		model->setData(index, "aaa");   
	}
}
ui->tableView->setModel(model);

在这里插入图片描述

3、去掉选中虚线

ui->tableView->setFocusPolicy(Qt::NoFocus);

4、去掉网格线

ui->tableView->setShowGrid(false);

在这里插入图片描述

5、设置选中方式

5.1、选中单个项目

ui->tableView->setSelectionBehavior(QAbstractItemView::SelectItems);
ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection);

在这里插入图片描述

5.2、选中单行

ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection);

在这里插入图片描述

5.3、选中单列

ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection);

在这里插入图片描述

6、样式设置

为了方便辨识,用一些简单显眼的颜色来写例子。

QTableView {  
    border: 1px solid red;
    background: black;
	color: white;
	font-size:18px;
}

QTableView::item {
    border: 2px solid blue; 
}

QTableView::item:selected {
	background-color: green;
    color: yellow;
}

在这里插入图片描述

7、文字居中

文字居中需要一个个item设置。

model->setData(index, Qt::AlignCenter, Qt::TextAlignmentRole);

在这里插入图片描述

8、设置图标

图标需要一个个item设置。

model->setData(index, QIcon("a.png"), Qt::DecorationRole);

在这里插入图片描述

9、表头样式设置

QHeaderView {
    height: 40px;
}

QHeaderView::section {	/* 表头的项 */
	background: red;
    border: none;
}

9、总结

最后把这些常用的设置都粘贴到一起,方便复制使用。

ui->tableView->setFocusPolicy(Qt::NoFocus);
ui->tableView->setSelectionBehavior(QAbstractItemView::SelectItems);
ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection);
ui->tableView->setShowGrid(false);
ui->tableView->setAlternatingRowColors(true);
ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
//    ui->tableView->horizontalHeader()->setStretchLastSection(true);
ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
  • 1
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QTableView 是一个常用Qt控件,用于显示二维表数据。当需要对表格中的某一列进行特定的显示或交互处理时,可以使用委托来实现。 委托(Delegate)是Qt中的一个重要概念,它可以自定义单元格的显示方式和交互行为。对于QTableView的列设置委托,我们可以通过自定义委托类来实现。 首先,需要创建一个继承于QItemDelegate的委托类。在委托类中,可以重写paint()、createEditor()和setEditorData()等方法来实现自定义的显示方式和交互行为。 在QTableView中,通过setDelegateForColumn()方法为某一列设置委托。该方法接受两个参数:列索引和委托实例。我们可以在创建委托实例时,同时设置相应的列索引,以实现为特定列设置委托。 例如,我们需要为表格的第一列设置一个自定义委托,用于显示该列的数据为斜体。可以按照以下步骤实现: 1. 创建一个继承于QItemDelegate的自定义委托类,例如MyDelegate。 2. 在MyDelegate类中重写paint()方法,在需要特殊显示的单元格中使用QPainter进行斜体绘制。 3. 在使用QTableView的代码中,创建一个MyDelegate类的实例。 4. 通过tableView->setDelegateForColumn(0, delegate)方法为第一列设置委托。 这样,在QTableView中的第一列的单元格数据就会以斜体方式显示。 通过以上步骤,我们可以为QTableView的列设置委托,实现特定的显示和交互效果。委托机制为我们提供了更高度的自定义能力,使得我们能够更好地满足实际需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值