Qt QTableView

表格数据基本需要用到QTableView 进行表示, 记录下QTableView 的使用方法和遇到的问题

创建QTableView

QTableView* table = new QTableView();    //

设置表格属性

table->setEditTriggers(QAbstractItemView::NoEditTriggers);//设置表格只读,不能进行编辑

table->setShowGrid(false);   //不显示网格线

table->verticalHeader()->hide();  //隐藏行表头 或 table->vercalHeader()->setVisible(false);


table->verricalHeader()->setDefaultSeciontSize(22);  //设置默认行高

table->horizontalHeader()->setDefaultSecionSize(100);  //设置默认列宽


#注意设置表头时需要用到头文件 #include <QHeaderView>

table->setSelectionBehavior(QAbstractItemView::SelectRows);  //设置选中时为整行选中



table->setColumnWidth(0, 100);  #设置各列宽度,注意该设置函数必须在数据模型创建并绑定之后调用才起效, 刚开始在setModel 之前调用了该函数始终没有生效

table->setColumnWidth(1, 100);

table->setColumnsWidth();    //设置所有列宽


table->resizeRowToContents(int n);   //根据内容调整某行的行高

table->resizeColumnsToContents();  //根据内容自动调整所有列的列宽


创建数据模型

QStandardItemModel* dataModel = new QStandardItemModel();

table->setModel(dataModel);  //绑定数据模型

//设置列表头

dataModel->setHeaderData(0, Qt::Horizontal, tr("列1"));

dataModel->setHeaderData(1, Qt::Horizontal, tr("列2"));

//添加设置数据
dataModel->setItem(0, 0, new QStandardItem("data1"));
dataModel->setItem(0, 0, new QStandardItem("data2"));

//设置数据条目显示样式
dataModel->item(0, 0)->setTextAlignment(Qt::AlignCenter);  //设置数据居中显示

dataModel->item(0, 0)->setForeground(QBrush(QColor(255, 0, 0))); //设置数据显示颜色

dataModel->item(0, 0)->setFont(Font("Microsoft YaHei", 15, 75)); //设置数据显示字体

//设置表头显示样式
dataModel->horizontalHeaderItem(0)->setFont(QFont("Helvetica", 10, 50));
dataModel->horizontalHeaderItem(0)->setBackgroundColor(QColor("0,0, 0")); //设置单元格背景颜色
dataModel->horizontalHeaderItem(0)->setTextColor(QColor("100, 100, 100")); //设置字体颜色

dataModel->sort();  //数据排序

单元格加入控件, 比如加一个下拉框到单元格
QComBox *box = new QComBox();
box->addItem("Y");
box->addItem("N");
dataModel->addCellWidget(0,0, box);  增加控件到单元格

//添加一行多列数据
 QStandardItem* item1 = new QStandardItem;  //标准项, 用来保存一个数据项
 item1->setData(messageTime, 0);
 QStandardItem* item2 = new QStandardItem;
 item2->setData(message, 0);
 QList<QStandardItem *> row;
 row.append(item1);
 row.append(item2);
dataModel->appendRow(row);


 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值