QStandardItemModel model;
//设置大小
model.setColumnCount(3); //列
model.setRowCount(musicFound); //行//设置标题
model.setHeaderData(0,Qt::Horizontal,"ID");
//添加数据
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);
六 、参考2
QTableView是Qt中用来把数据集以表格形式提供给用户的一个控件,它与C++Builder中的DBGrid作用类似。坦白的说,DBGrid的使用要比QTableView更容易一些。但QTableView在使用麻烦的同时,也提供了更多的灵活性。
软件环境: ubuntu 最终效果图: 一、添加表头:- QStandardItemModel *model = new QStandardItemModel();
- model->setColumnCount(2);
- model->setHeaderData(0,Qt::Horizontal,QString::fromLocal8Bit("卡号"));
- model->setHeaderData(1,Qt::Horizontal,QString::fromLocal8Bit("姓名"));
- ui->tableView->setModel(model);
- //表头信息显示居左
- ui->tableView->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft);
- //设置列宽不可变
- ui->tableView->horizontalHeader()->setResizeMode(0,QHeaderView::Fixed);
- ui->tableView->horizontalHeader()->setResizeMode(1,QHeaderView::Fixed);
- ui->tableView->setColumnWidth(0,101);
- ui->tableView->setColumnWidth(1,102);
- for(int i = 0; i < 3; i++)
- {
- model->setItem(i,0,new QStandardItem("2009441676"));
- //设置字符颜色
- model->item(i,0)->setForeground(QBrush(QColor(255, 0, 0)));
- //设置字符位置
- model->item(i,0)->setTextAlignment(Qt::AlignCenter);
- model->setItem(i,1,new QStandardItem(QString::fromLocal8Bit("哈哈")));
- }
- //x是指定删除哪一行
- model->removeRow(x);
- //删除所有行
- model->removeRows(0,model->rowCount());
- tb1=newQSqlTableModel(this,*dbR); //dbR是本应用中的数据源
- tb1->setTable("tmp"); //处方临时表
- tbList->setModel(NULL); //清除原先数据集
- tbList->setModel(tb1); //刷新显示
- QModelIndexmdidx=m_ui->tbList->model()->index(row,column); //获得需要编辑的单元格的位置
- m_ui->tbList->setFocus(); //把输入焦点交给tbList
- m_ui->tbList->setCurrentIndex(mdidx); //设定需要编辑的单元格
- m_ui->tbList->edit(mdidx); //开始编辑
- QStandardItemModel model;
- //设置大小
- model.setColumnCount(3); //列
- model.setRowCount(musicFound); //行
- //设置标题
- model.setHeaderData(0,Qt::Horizontal,"ID");
- //添加数据
- 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);
QStandardItemModel model;
//设置大小
model.setColumnCount(3); //列
model.setRowCount(musicFound); //行//设置标题
model.setHeaderData(0,Qt::Horizontal,"ID");
//添加数据
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);
六 、参考2
QTableView是Qt中用来把数据集以表格形式提供给用户的一个控件,它与C++Builder中的DBGrid作用类似。坦白的说,DBGrid的使用要比QTableView更容易一些。但QTableView在使用麻烦的同时,也提供了更多的灵活性。
软件环境: ubuntu 最终效果图: 一、添加表头:- QStandardItemModel *model = new QStandardItemModel();
- model->setColumnCount(2);
- model->setHeaderData(0,Qt::Horizontal,QString::fromLocal8Bit("卡号"));
- model->setHeaderData(1,Qt::Horizontal,QString::fromLocal8Bit("姓名"));
- ui->tableView->setModel(model);
- //表头信息显示居左
- ui->tableView->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft);
- //设置列宽不可变
- ui->tableView->horizontalHeader()->setResizeMode(0,QHeaderView::Fixed);
- ui->tableView->horizontalHeader()->setResizeMode(1,QHeaderView::Fixed);
- ui->tableView->setColumnWidth(0,101);
- ui->tableView->setColumnWidth(1,102);
- for(int i = 0; i < 3; i++)
- {
- model->setItem(i,0,new QStandardItem("2009441676"));
- //设置字符颜色
- model->item(i,0)->setForeground(QBrush(QColor(255, 0, 0)));
- //设置字符位置
- model->item(i,0)->setTextAlignment(Qt::AlignCenter);
- model->setItem(i,1,new QStandardItem(QString::fromLocal8Bit("哈哈")));
- }
- //x是指定删除哪一行
- model->removeRow(x);
- //删除所有行
- model->removeRows(0,model->rowCount());
- tb1=newQSqlTableModel(this,*dbR); //dbR是本应用中的数据源
- tb1->setTable("tmp"); //处方临时表
- tbList->setModel(NULL); //清除原先数据集
- tbList->setModel(tb1); //刷新显示
- QModelIndexmdidx=m_ui->tbList->model()->index(row,column); //获得需要编辑的单元格的位置
- m_ui->tbList->setFocus(); //把输入焦点交给tbList
- m_ui->tbList->setCurrentIndex(mdidx); //设定需要编辑的单元格
- m_ui->tbList->edit(mdidx); //开始编辑
- QStandardItemModel model;
- //设置大小
- model.setColumnCount(3); //列
- model.setRowCount(musicFound); //行
- //设置标题
- model.setHeaderData(0,Qt::Horizontal,"ID");
- //添加数据
- 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);