当前位置:编程学习 > wap >>

已经建立好的QTableWidget循环添加了QCheckBox怎么在界面勾选了QCheckBox的时候触发一个函数???

问题1:
已经建立好的QTableWidget循环添加了QCheckBox怎么在界面勾选了QCheckBox的时候触发一个函数???
.h文件的类中
QCheckBox *HDnumber;
.cpp的函数中实现
for(int i=0;i<= g_iDiskCnt;i++)
{
HDnumber = new QCheckBox;
ui->tableWidget_4->setCellWidget(i,0,HDnumber);
}

如图:当我勾选一个按钮时获取它的行号/Item???
我这个因为是一个指针循环建立的对象,我的QCheckBox是循环建立的,所以指针只有一个但是有10个对象生成了
界面 对象 指针 --------------------编程问答-------------------- 不要用这种方法添加checkbox
QTableWidgetItem自带checkbox有CheckState属性,既能显示QCheckBox,又能读取状态
QTableWidget *tableWidget = new QTableWidget;
QTableWidgetItem *checkBox = new QTableWidgetItem();
checkBox->setCheckState(Qt::Checked);
tableWidget ->setItem(row, column, checkBox);
点击并获取状态是
connect(tableWidget, SIGNAL(cellChanged(int,int)), this, SLOT(changeCheck(int, int)));
void changeCheck(int row, int col)
{
      if(tableWidget ->item(row, col)->checkState() == Qt::Checked)
          ...
      else
          ...
} --------------------编程问答-------------------- 重新定义空间的方法我试了,可以将获得的i值当作行号,在从新获得他的内容就行,就是有点麻烦但是能实现, 不好用 --------------------编程问答-------------------- 不过,非常感谢 --------------------编程问答--------------------
引用 2 楼 mailyu 的回复:
重新定义空间的方法我试了,可以将获得的i值当作行号,在从新获得他的内容就行,就是有点麻烦但是能实现, 不好用

你指的重定义什么? --------------------编程问答--------------------
引用 楼主 mailyu 的回复:
问题1:
已经建立好的QTableWidget循环添加了QCheckBox怎么在界面勾选了QCheckBox的时候触发一个函数???
.h文件的类中
QCheckBox *HDnumber;
.cpp的函数中实现
for(int i=0;i<= g_iDiskCnt;i++)
{
HDnumber = new QCheckBox;
ui->tableWidget_4->setCellWidget(i,0,HDnumber);
}

如图:当我勾选一个按钮时获取它的行号/Item???
我这个因为是一个指针循环建立的对象,我的QCheckBox是循环建立的,所以指针只有一个但是有10个对象生成了


你确定你这样写没有问题了么?你这样写HDnumber 就是最后一个建立的QCheckBox。
先前new的QCheckBox还在,但都没有指针指向了。
就像房子其实都还在,就是门牌指向了最后一个房子,前面的房子你只能通过别的方法找到。
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,