QT tableWidget基本用法

//QTableWidget行选中/删除/添加行  
  
//1  均分各列  
 tableWidget->horizontalHeader()->setStretchLastSection(true); //就是这个地方  
 tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);  
   
//2 整行选中:job_20160526213327  
tableWidget->setSelectionBehavior ( QAbstractItemView::SelectRows); //设置选择行为,以行为单位  
tableWidget->setSelectionMode ( QAbstractItemView::SingleSelection); //设置选择模式,选择单行  
  
//3  删除选中的整行  
   int rowIndex = m_pAttrbuteList->currentRow();  
   if (rowIndex != -1)  
     tableWidget->removeRow(rowIndex);  
       
    /* 为了将数据能够在界面中显示的更清楚一些,在这里应用到了tableWidget控件,现将该控件中删除指定行的代码介绍如下: 
     QTable里有一个removeRow(int i)函数用来删除当前行,但是如果我们没有对于table进行任何的选中,那么QTable是如何返回的呢? 
     用Qt Creator里拖了一个tableWidget,加一个按钮,点击删除后执行*/  
     int i = ui->tableWidget->currentRow();  
     QMessageBox msg;  
     msg.setText(QString::number(i));  
     msg.exec();  
     ui->tableWidget->removeRow(i);  
     /*在不选择行的情况下发现每次点击后删除的都是第一行,i的输出都是0,原因其实很简单,就是因为table的当前焦点在第一样的 第一个单元格所导致的,解决的办法就是让table失去焦点,在构造函数里面添加ui->tableWidget->setFocusPolicy(Qt::NoFocus); 
     然后再试,发现点击删除按钮如果不选中行的话是不能删除的,返回的i此时是-1。 
     控件刚开始的时候左边默认自带序列号,如果想去掉左边的行号,加上下面的代码就可以了。*/  
      QHeaderView* headerView = table的名字->verticalHeader();  
      headerView->setHidden(true);  
        
//4 添加整行  
int rowIndex = m_pAttrbuteList->rowCount();  
tableWidget->setRowCount(rowIndex + 1);//总行数增加1  
tableWidget->setRowHeight(rowIndex, 24);//设置行的高度  
  
--------------------------------------------------------------------------------  
  
QTableWidget *table = new QTableWidget(this);  
table->setColumnCount(5);    //设置列数  
table->setRowCount(3);        //设置行数/  
  
/*设置列名*/  
QStringList headers;  
headers<<"列名1"<<"列名2"<<"列名3";  
table->setHorizontalHeaderLabels(headers);  
  
/*给单元格添加内容*/  
void addItemContent(int row, int column, QString content)  
{  
      QTableWidgetItem *item = new QTableWidgetItem (content);  
      table->setItem(row, column, item);  
}  
  
/*给单元格中增加图标*/  
QTableWidgetItem *item = new QTableWidgetItem(QIcon("myImage.jpg"), NULL);  //只加入图标,没有字符串  
QTableWidgetItem *item = new QTableWidgetItem(QIcon("myImage.jpg"), myString);   //加入图标和字符串  
table->setItem(row, column, item);  
  
/*插入一行*/  
int row = table->rowCount();  
table->insertRow(row);  
  
/*插入一列*/  
int column = table->columnCount();  
table->insertColumn(column);  
  
//使行列头自适应宽度,最后一列将会填充空白部分  
table->horizontalHeader()->setStretchLastSection(true);            
  
//使行列头自适应宽度,所有列平均分来填充空白部分              
table->horizontalHeader()->setResizeMode(QHeaderView::Strtch);          
  
//使行自适应高度,假如行很多的话,行的高度不会一直减小,当达到一定值时会自动生成一个QScrollBar  
table->verticalHeader()->setResizeMode(QHeaderView::Strtch);  
  
//设置单击选择一行  
table->setSelectionBehuavior(QAbstractItemView::SelectRows);  
  
//设置每行内容不可编辑  
table->setEditTriggers(QAbstractItemView::NoEditTriggers);  
  
//设置只能选择一行,不能选择多行  
table->setSelectionMode(QAbstractItemView::SingleSelection);  
  
/*去掉每行的行号*/  
QHeaderView *headerView = table->verticalHeader();  
headerView->setHidden(true);  
  
/*设置让某个单元格或某行选中*/  
//选中单元格:  
table->setCurrentCell(row, column, QItemSelectionModel::Select);  
//选中一行:  
table->setCurrentCell(row, QItemSelectionModel::Select);//(注意此处的列没有值)  
  
//设置某一列为不可编辑  
for(int i = 0; i<tabelwidget.rowcount();i++)  
{  
    item(i, colunm)->setFlags(Qt::NoItemFlags);  
}  

  • 3
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值