Qt之QTableWiget的基本用法总结

22 篇文章 0 订阅

注意: QTableWiget 在使用前一定要设置行数以及列数 ( QTableWidget *tableWidget = new QTableWidget(15,5) 此种方法可不用)

QStringList headList;
    headList<<"Test"<<"Value";
    m_iRow = 5;//表格当前行数
    m_iCol = headList.size();//表格当前列数
    ui->tableWidget->setColumnCount(m_iCol);//设置列数
    ui->tableWidget->setRowCount(m_iRow);//设置行数
    ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);//自适应列宽
    ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);//表格不能被编辑
    ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);//整行选中效果
    ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);//设置为只能单选
   ui->tableWidget->verticalHeader()->setVisible(false);   //隐藏列表头
    ui->tableWidget->horizontalHeader()->setVisible(false); //隐藏行表头
    ui->tableWidget->setHorizontalHeaderLabels(headList);//设置表头
         ui->tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection);  //可多选(Ctrl、Shift、  Ctrl+A 等)
         int iCurCount = ui->tableWidget->currentRow();//获取当前行数
    //在单元格里面添加控件
    QComboBox *comBox = new QComboBox(ui->tableWidget);
    comBox->addItem("Y");
       comBox->addItem("N");
       ui->tableWidget->setCellWidget(4,0,comBox);
    QLineEdit * l = new QLineEdit(ui->tableWidget);
    l->setText("test");
    ui->tableWidget->setCellWidget(4,1,l);
    //设置表格某一列不能被编辑
        QTableWidgetItem *item = ui->tableWidget->item(4,1);
    item->setFlags(item->flags() & (~Qt::ItemIsEditable));
    QString strText = ui->tableWidget->item(0, 0)->text();  //获取单元格内容
    QList<QTableWidgetItem*> list = ui->tableWidget->selectedItems();//获取选择的Items

QTableWidget常用槽函数和信号:

void itemClicked(QTableWidgetItem *item);//单击单元格信号
void itemDoubleClicked(QTableWidgetItem *item)//双击单元格信号
[slot] void QTableWidget::clear()//清除表格 会释放单元格子所占据的空间 (槽函数) //清空掉表格内所有内容,包括标题头
[slot] void QTableWidget::clearContents()//清除表格 不会清除表格头(槽函数)
[signal] void QWidget::customContextMenuRequested(const QPoint &pos)(信号 实现右键菜单编写其槽函数即可)

QTableWidget之右键菜单实现
①启用右键菜单
ui->tableWidget->setContextMenuPolicy(Qt::CustomContextMenu);//启用右键菜单
②编写响应槽函数
QObject::connect(ui->tableWidget,SIGNAL(customContextMenuRequested(QPoint)),this,SLOT(SlotcustomContextMenuRequested(QPoint)));
③编写响应函数

void Widget::on_tableWidget_customContextMenuRequested(const QPoint &pos)
{
  QMenu * menu = new QMenu;
  QAction *action = new QAction;//构建菜单和菜单项
  action->setText("Add");
    connect(action,SIGNAL(triggered(bool)),this,SLOT(Test()));//绑定响应函数  
  menu->addAction(action);

  menu->exec(QCursor::pos());
  delete menu;
    delete action;//释放空间
}

QTableWidget动态添加行

void Widget::Test()
{
  ui->tableWidget->insertRow(m_iRow);//在尾部插入行
 for(int j  = 0;j<2;++j)
 {
     QTableWidgetItem * item = new QTableWidgetItem;
     item->setText(QString("%1,%2").arg(m_iRow+1).arg(j+1));
     ui->tableWidget->setItem(m_iRow,j,item);//设置表格项
 }
  m_iRow++;//行加一
}

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一路初心向前

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

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

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

打赏作者

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

抵扣说明:

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

余额充值