Qt学习之QTableView1

转载自https://www.cnblogs.com/Dennis-mi/articles/5261863.html

一、Qtableview主要借助于QStandardItemModel类来使用,最后再把QStandardItemModel的对象set进去即可

QTableView *tableview;
QStandardItemModel *model = new QStandardItemModel();

Qtableview用的mvc模式 实际上用到的是model/view居多
tableview->setmodel(model);

model->setHeaderdata();设置表的column名称;

当然如果想隐藏column名称的话 只需要用:
tableview->horizontalHeader()->setVisible(false);

隐藏row名称:tableview->verticalHeader()->setVisible(false);
若是想设置表格column的样式
使用:tableview->->horizontalHeader()->setStyleSheet();

使用setColumnWidth()来设置Header的宽度;
QT还提供了对表格表头进行设置的model:
tableview->horizontalHeader()->setResizeMode();
tableview->verticalHeader()->setResizeMode();

Qt提供的 setResizeMode()有四种:
QHeaderView::Interactive;
QHeaderView::Fixed;
QHeaderView::Stretch;
QHeaderView::ResizeToContents;

对表格表头设置完之后,接下来就是表格之中的item:
要得到当前选中的item,如下操作:
QModelIndex Index = tableview->currentIndex();得到当前的Index;
QStandardItem *item = listAll->itemFromIndex(index);//根据index 得到item

如果想让点击item 发送信号 则可以使用:
connect(tableview, SIGNAL(clicked ( const QModelIndex &)), this,
SLOT(Function(const QModelIndex &)));//点击tableview中的item触发信号

若要对item可以设置背景颜色 使用:setBackground()即可;

二、
//设置大小

#include <QStandardItemModel>//包含头文件

QStandardItemModel model;

model.setColumnCount(3); //列
model.setRowCount(musicFound); //行

//设置标题
model.setHeaderData(0,Qt::Horizontal,“ID”);

QString str;
model->setHeaderData(i,Qt::Horizontal,str);//当有多列内容时

//添加数据
for(int j=0;j<row;j++)
{
//写id
QStandardItem *itemID = new QStandardItem(“hello”);//QString::number(j)));
model.setItem(j,0,itemID);
}

//选择这个model
m_ui->tableView->setModel(&model);

//隐藏左边那列
m_ui->tableView->verticalHeader()->hide();

//列宽
m_ui->tableView->setColumnWidth(0,30);
//整行选择
m_ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);

三 动态添加行
在表格中添加行时,我们只需要在model中插入数据即可,一旦model中的数据发生变化,QTabelView显示就会做相应的变动
//在第一行添加学生张三的个人信息(setItem函数的第一个参数表示行号,第二个表示列号,第三个为要显示的数据)

student_model->setItem(0, 0, new QStandardItem(“张三"));
student_model->setItem(0, 1, new QStandardItem("20120202"));
student_model->setItem(0, 2, new QStandardItem("男"));
student_model->setItem(0, 3, new QStandardItem("18"));
student_model->setItem(0, 4, new QStandardItem("土木学院"));

四 设置列名
QTextCodec::setCodecForTr(QTextCodec::codecForName(“GB18030”));//编码设置为GB18030
setValueModel->setHorizontalHeaderLabels(QStringList() <<tr(“名称”)<<tr(“单位”)<<tr(“取值范围”)<<tr(“定值”));
setValueTableView->setModel(setValueModel);//!!!
setValueTableView->horizontalHeader()->setStretchLastSection(true);//最后一列对窗口动态变化

五、设置数据显示的样式

//设置单元格文本居中,张三的数据设置为居中显示
student_model->item(0, 0)->setTextAlignment(Qt::AlignCenter);
student_model->item(0, 1)->setTextAlignment(Qt::AlignCenter);
student_model->item(0, 2)->setTextAlignment(Qt::AlignCenter);
student_model->item(0, 3)->setTextAlignment(Qt::AlignCenter);
student_model->item(0, 4)->setTextAlignment(Qt::AlignCenter);
//设置单元格文本颜色,张三的数据设置为红色
student_model->item(0, 0)->setForeground(QBrush(QColor(255, 0, 0)));
student_model->item(0, 1)->setForeground(QBrush(QColor(255, 0, 0)));
student_model->item(0, 2)->setForeground(QBrush(QColor(255, 0, 0)));
student_model->item(0, 3)->setForeground(QBrush(QColor(255, 0, 0)));
student_model->item(0, 4)->setForeground(QBrush(QColor(255, 0, 0)));
//将字体加粗
student_model->item(0, 0)->setFont( QFont( “Times”, 10, QFont::Black ) );
student_model->item(0, 1)->setFont( QFont( “Times”, 10, QFont::Black ) );
student_model->item(0, 2)->setFont( QFont( “Times”, 10, QFont::Black ) );
student_model->item(0, 3)->setFont( QFont( “Times”, 10, QFont::Black ) );
student_model->item(0, 4)->setFont( QFont( “Times”, 10, QFont::Black ) );
//设置排序方式,按年龄降序显示
student_model->sort(3, Qt::DescendingOrder);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值