QT tableWidget基本用法

来源:互联网 发布:苹果6打不开数据流量 编辑:程序博客网 时间:2024/05/16 15:19
//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);  }