QTableWidget使用方法详细介绍

该类主要是用列表的方式来显示数据。

1.添加控件

ui->tableWidget->setCellWidget(int row,int column,QWidget *widget);

2.设置列尺寸的比例

ui->tableWidget->horizontalHeader()->setSectionResizeMode(0,QHeaderView::ResizeToContents);//根据内容来定义宽度

ui->tableWidget->horizontalHeader()->setSectionResizeMode(1,QHeaderView::Stretch);//该列根据布局和其它列的根据内容定义的列的宽度自适应宽度

3.设置第一列隐藏

ui->tableWidget->verticalHeader()->hide();

4.获取文本内容

QString text = ui->tableWidget->item(int row,int column)->text();

5.设置不可编辑

ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);

6、设置清空

void QTableWidget::clear() [slot]  

Removes all items in the view. This will also remove all selections and headers.

//清空表格中所有内容(包含表头)。

7、清空但不包含表头

void QTableWidget::clearContents() [slot]

Removes all items not in the headers from the view. This will also remove all selections. The table dimensions stay the same.//清空表格中的内容(不包含表头)。

8、删除表格中的某行中的某列内容。

void QTableWidget::removeCellWidget(int row, int column)
 Removes the widget set on the cell indicated by row and column.

9、void QTableWidget::removeColumn(int column) [slot] 

//删除表格中的某列内容。
 Removes the column column and all its items from the table.

10、删除表格中的某行内容

void QTableWidget::removeRow(int row) [slot] 。
 Removes the row row and all its items from the table

11、删除表格中的某行和某列

QTableWidgetItem * QTableWidget::takeItem(int row, int column)
 Removes the item at row and column from the table without deleting it.

12、删除表格中的水平标题头

QTableWidgetItem * QTableWidget::takeHorizontalHeaderItem(int column)

 Removes the horizontal header item at column from the header without deleting it.

13、删除表格中的垂直标题头

QTableWidgetItem * QTableWidget::takeVerticalHeaderItem(int row) 

 Removes the vertical header item at row from the header without deleting it.

14、添加多个控件,如何响应相似的操作

for循环,按照1添加控件;

for(int i= - ;i<5;i++)
{     
   //创建一个QPushButton控件
   QPushButton *pushButton_ = new QPushButton();
   //设置按键显示文字
   pushButton_->setText("点击");
   //建立信号槽
   connect(pushButton_, SIGNAL(clicked()), this, SLOT(clickButton()));
   //将QPushButton控件设置到QTableWidget中
   ui->tableWidget->setCellWidget(i, 1 ,pushButton_);
}
 
void MyTableWidget::clickButton()
{
    QPushButton *pushButton_ = dynamic_cast<QPushButton*>(this->sender());
    if(NULL == pushButton_)
    {
        return;
    }
    int x = pushButton_->frameGeometry().x();
    int y = pushButton_->frameGeometry().y();
    QModelIndex index = ui->tableWidget->indexAt(QPoint(x, y));
    int row = index.row();
    int column = index.column();
    //有可能只需要行   不需要列  根据自己的情况来使用
    qDebug() << "选择第几行:" << row << "选择第几列:" << column;
 
    //接下来自定义要处理的内容
    //。。。。。。
}

15、设置居中显示

ui->tableWidget->horizontalHeader()->setDefaultAlignment(Qt::AlignHCenter);//表头字体居中

16、设置Item居中显示

     //让tableWidget内容中的每个元素居中

    for (int i=0;i<5;i++)

       {

           for (int j=0;j<8;j++)

           {

               ui->tableWidget->item(i,j)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);

           }

       }

 

17、合并单元格:

  tableWidget->setSpan(0, 0, 3, 1)  # 其参数为: 要改变单元格的1行数、2列数,要合并的3行数、4列数

18、设置单元格的大小

  首先,可以指定某个行或者列的大小

   tableWidget->setColumnWidth(3,200);

   tableWidget->setRowHeight(3,60);

还可以将行和列的大小设为与内容相匹配

   tableWidget->resizeColumnsToContents();

   tableWidget->resizeRowsToContents();

19、 获得单击单元格的内容


通过实现 itemClicked (QTableWidgetItem *) 信号的槽函数,就可以获得鼠标单击到的单元格指针,进而获得其中的文字信息

connect(tableWidget,SIGNAL(itemClicked(QTreeWidgetItem*,int)),this, SLOT( getItem(QTreeWidgetItem*,int)) );

20、 获得双击单元格的内容


通过实现 itemDoubleClicked (QTableWidgetItem *) 信号的槽函数,就可以获得鼠标单击到的单元格指针,进而获得其中的文字信息

connect(tableWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this, SLOT( getItem(QTreeWidgetItem*,int)) );

21、背景色交替

ui->tabWidget->setAlternatingRowColors(true);
ui->tabWidget->setStyleSheet("alternate-background-color:red;background:white;color:#6b6d7b;);

Note:语句顺序需要注意,顺序错了达不到效果的 

22.添加一行数据

 int rowIndex = m_pAttrbuteList->rowCount();
 tableWidget->setRowCount(rowIndex + 1);//总行数增加1
 void addItemContent(int row, int column, QString content)
 {
 
       QTableWidgetItem *item = new QTableWidgetItem (content);
        table->setItem(row, column, item);
 
 }

23.获取选中行的内容

QList<QTableWidgetItem*> items = ui->tableWidget->selectedItems();
int count = items.count();
for(int i = 0; i < count; i++)
{
	int row = ui->tableWidget->row(items.at(i));
	QTableWidgetItem *item = items.at(i);
	QString text = item->text(); //获取内容
}

24.获取选中的行

QList<QTableWidgetSelectionRange>ranges=ui->tableWidget->selectedRanges();

        int count=ranges.count();

        for(int i=0;i<count;i++)

        {

           int topRow=ranges.at(i).topRow();

           int bottomRow=ranges.at(i).bottomRow();

           for(int j=topRow;j<=bottomRow;j++)

           {

              qDebug()<<"selectRow"<<j;

            }

        }

25.滚动条

ui->tableWidget->scrollToItem(ui->tableWidget(row,1));//滚动到当前位置

ui->tableWidget->scrollToBottom();

ui->tableWidget->scrollToTop();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fyzy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值