• 6062阅读
  • 4回复

QT  tabwidget 表格控件用setCellWidget 添加很多按钮当点击按扭时 如何能够获取当前所点击的行和列? [复制链接]

上一主题 下一主题
离线ngsscool
 

只看楼主 倒序阅读 楼主  发表于: 2016-01-06
QT  tabwidget 表格控件用setCellWidget 添加很多按钮当点击按扭时 如何能够获取当前所点击的行和列?
离线daemon-huan

只看该作者 1楼 发表于: 2016-01-06
有对应的鼠标事件,具体方法名可以查一下,思路就是这样的
离线realfan

只看该作者 2楼 发表于: 2016-01-07
两种方法:
方法1
.点击按钮时,在click响应槽中,得到Sender,遍历表格widget,和哪行哪列的对得上,就确定了

方法2:
往表格中添加按钮时,可以给按钮SetObjectName,Name中包含它所在的行列信息。在click响应槽中,得到Sender,再取ObjectName,就可以得到行列了
离线ngsscool

只看该作者 3楼 发表于: 2016-01-07
回 realfan 的帖子
realfan:两种方法:
方法1
.点击按钮时,在click响应槽中,得到Sender,遍历表格widget,和哪行哪列的对得上,就确定了
方法2:
....... (2016-01-07 08:35) 

大哥 有没有对应的参考代码
离线realfan

只看该作者 4楼 发表于: 2016-01-08
回 ngsscool 的帖子
ngsscool:
大哥 有没有对应的参考代码[表情]

  1. Widget::Widget(QWidget *parent) : QWidget(parent)
  2. {
  3.     QTableWidget * pTable = new QTableWidget(this);
  4.     pTable->setRowCount(3);
  5.     pTable->setColumnCount(2);
  6.     for(int iR = 0; iR < pTable->rowCount(); ++iR)
  7.     {
  8.         for(int iC = 0; iC < pTable->columnCount(); ++iC)
  9.         {
  10.             QPushButton * pbtn = new QPushButton(pTable);
  11.             pbtn->setObjectName(QString("%1:%2").arg(iR).arg(iC));
  12.             connect(pbtn, &QPushButton::clicked, this, &Widget::slotBtnClicked);
  13.             pTable->setCellWidget(iR, iC, pbtn);
  14.          }
  15.      }
  16. }
  17. void Widget::slotBtnClicked()
  18. {
  19.     QString str = sender()->objectName();
  20.     QStringList lst = str.split(":");
  21.     int iRow = lst.at(0).toInt();//得到行
  22.     int iCol = lst.at(1).toInt(); //得到列
  23.     qDebug() <<"Row="<< iRow << " Col=" << iCol;
  24. }



快速回复
限100 字节
 
上一个 下一个