Qt QTableView

	QStandardItemModel* model = new QStandardItemModel(this);
	
	// 列数 	0 ~ columnNumber-1
    model->setColumnCount(columnNumber);
	// 列字段名(第“负一”行,第j列)
    model->setHeaderData(j,Qt::Horizontal, "开始时间");
    //移除第j列数据
	model->removeColumn(j);
    
    // 行数 0 ~ rowNumber-1
    model->setRowCount(rowNumber);
	// 行字段名(第“负一”列,第i行)
    model->setHeaderData(i,Qt::Vertical, i);
	//默认显示行头,如果你觉得不美观的话,我们可以将隐藏
	tableview->verticalHeader()->hide();
	//设置选中时为整行选中        
	tableview->setSelectionBehavior(QAbstractItemView::SelectRows);         
    // 产生一条记录
    QList<QStandardItem*> list;
	list << new QStandardItem("王五") 
		<< new QStandardItem("22") << new QStandardItem("男");
	//在第0行插入一条记录
	model->insertRow(0, list); 
    //移除第i行数据
	model->removeRow(i);
    
	// 数据 i行j列
	model->setItem(i, j, object));
	//设置表格的单元为只读属性,即不能编辑        
	tableview->setEditTriggers(QAbstractItemView::NoEditTriggers);  
	//返回一个被选中的所有Item的索引,一般是去遍历这个链表进行处理
	[virtual protected] QModelIndexList QTableView::selectedIndexes() const
	// QStandardItem被点选信号
	void QAbstractItemView::clicked(const QModelIndex &index);
	// 数据变更信号处理
	connect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex,QVector<int>)), 
		this, SLOT(dataChangedSlot(QModelIndex,QModelIndex,QVector<int>)));
public slots:
	void dataChangedSlot(const QModelIndex &topLeft, const QModelIndex &bottomRight,
		const QVector<int> &roles = QVector<int> ());
	void Widget::dataChangedSlot(const QModelIndex &topLeft,
		const QModelIndex &bottomRight, const QVector<int> &roles)
{
    qDebug() << _model->data(topLeft).toString() << endl;
}
	[pure virtual] QVariant QAbstractItemModel::data(const QModelIndex &index,
		int role = Qt::DisplayRole) const;
	
	// 通过QTableView显示
    ui->tableView->setModel(model);
	
	// QItemDelegate代理
	#include <QItemDelegate>
	class SpinDelegate : public QItemDelegate
	{
	public:
	    SpinDelegate(QObject *parent = Q_NULLPTR);
	    QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &option,
	    	const QModelIndex &index) const;
	};
	// 定义
	SpinDelegate::SpinDelegate(QObject *parent): QItemDelegate(parent)
	{	}
	QWidget* SpinDelegate::createEditor(QWidget *parent
	           , const QStyleOptionViewItem &option, const QModelIndex &index) const
	{
	    if(index.column() == 1) // 返回下拉框
	    {
	       QSpinBox* box = new QSpinBox(parent);
	       box->setMinimum(1);
	       box->setMaximum(99);
	       return box;
	    }
	    return QItemDelegate::createEditor(parent, option, index);
	}
	//设置代理
	this->setItemDelegate(new SpinDelegate(this));

Qt深入浅出(十五)QTableView
Qt如何清空tableview中的内容? [问题点数:40分,结帖人wudongshuo]
Qt QTableView 如何清理列表里的数据
QT QTableView 根据内容自适应宽度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值