http://www.qtcn.org/bbs/read-htm-tid-51835.html

http://www.qtcn.org/bbs/simple/?t43841.html

比如(点击每行最后的QPushButton,删除这行)

实现思路:
1写一个button类,继承自QPushButton,使其具有一个信号sendPointer(button*),这个信号可以发射button自己的指针。并把clicked()信号和这个信号connect在一起。
2在QTableWidget中写槽函数getPointer(button*)接收被点击按钮的指针。
3在QTableWidget中点击button,触发clicked()信号->触发sendPointer()->槽getPointer(button*),槽函数做两件事:
a接收被点击按钮的指针。
b用QWidget* cellWidget(int row, int column)遍历QTableWidget中所有的QWidget,把得到的QWidget指针进行类型转换,转换成button类,然后与得到的指针比较。两枚指针一致,则知道button所在行列。

===
这个问题有很多实现办法。比如用委托。
上面是我的实现。已成功。

mixer 2011-06-15 06:40

请教个QTableWidget中添加QPushButton后的响应问题

QTableWidget的列数固定,行数由传入的数据量决定,每个行的0列为数据,1、2列为编辑、删除按钮QPushButton。所以添加按钮及connect信号/槽在for循环中做,通过按钮操作(对应行,0列)的数据。
现在的问题是,按钮的clicked()信号发给槽doModify、doDel时,槽并不知道发送者的位置,而如果没有点击过TableWidget本身的话,currentIndex也不能利用,造成槽的动作无法定位0列的数据。
请教高手,是不是有别的办法?

mixer 2011-06-15 07:03
最简单的办法,大概是不添加按钮,点击某行后再new出来,这样就很容易确定是在操作哪个数据。不过,感觉不太地道。
zhangyueyi87 2011-06-15 09:07
简单,设置按钮ui->pushButton->setFocusPolicy(Qt::NoFocus);
并在构造函数中设置ui->tableWidget->setFocus();
weiweiqiao 2011-06-15 09:10
你试着调用QTableWidget::activateWindow()和QTableWidget::setCurrentCell ( int 0, int 0),始终将将控件激活。
mixer 2011-06-16 22:00

感谢回复,不过前天另想个办法.
在button的slot函数中,从sender得到button指针,根据这个button的位置(x,y),由tablewidget->itemAt(x,y)可得到modelindex,其中itemAt不受scroll影响.
用这个方法的好处是,从modelindex开始,能完全操作tablewidget.

int x = obj->frameGeometry().x();//obj为你QPushButton
int y = obj->frameGeometry().y();

QModelIndex index = m_pTableWidget->indexAt(QPoint(x,y));

int row = index.row();
int column = index.column();

点击得到QTableWidget中任意位置QPushButton的行列信息的更多相关文章

  1. [转载]GridView中点击某行的任意位置就选中该行

    原文链接:http://www.cnblogs.com/Echo529/p/4521701.html GridView中点击某行的任意位置就选中该行 分类: 第一步:添加选择列 点击GridView右 ...

  2. GridView中点击某行的任意位置就选中该行

    GridView中点击某行的任意位置就选中该行 -- :: 分类: 第一步:添加选择列 点击GridView右边小尖头,双击CommandField,选中"选择",添加,将起设置为不可见: 第二步:处 ...

  3. GridView中实现点击某行的任意位置就选中该行

    来源:http://auv2009.blog.163.com/blog/static/68858712200992731010670/ 在 GridView中增加一列:(该列是选择按钮,让其不显示) ...

  4. Spring 中任意位置获取 session 和 request

    在web.xml中添加监听: <listener> <listener-class>org.springframework.web.context.ContextLoaderL ...

  5. jQuery如何追加tr到table中任意位置--向Table中指定位置添加tr或td(jQuery)

    jQuery 添加新内容有以下四个方法: append() - 在被选元素的结尾插入内容 prepend() - 在被选元素的开头插入内容 after() - 在被选元素之后插入内容 before() ...

  6. NPOI 实现在已存在的Excel中任意位置开始插入任意数量行,并填充数据

    1 npoi版本2.1.3.1 2 需要添加的引用: using NPOI.SS.UserModel;using NPOI.XSSF.UserModel;using System.IO;using N ...

  7. 点击任意位置关闭(CocosCreator)

    推荐阅读:  我的CSDN  我的博客园  QQ群:704621321  我的个人博客       今天,接触到一个新功能,当弹出某个弹框时,需要点击除弹框的剩余任意位置,来关闭该弹框,例如:当红框内 ...

  8. 关于delphi点击webbrowser中任意一点的问题

    关于delphi点击webbrowser中任意一点的问题 有时候我们需要delphi载入webbrowser1打开网页的时候 需要点击某一个点的位置 可能是坐标 可能是按钮 可能是其他的控件应该如何来 ...

  9. Android点击其他任意位置收起软键盘

    在Android应用开发中,经常出现这样的需求,用户在输入文字的过程中,可能不想继续输入了,通过滑动或者点击其他位置(除软键盘和EditText以外的任何位置),希望能够自动收回键盘,这个功能可能有些 ...

随机推荐

  1. 【MongoDB】windows平台搭建Mongo数据库复制集(相似集群)(一)

    Replica  Sets(复制集)是在mongodDB1.6版本号開始新增的功能.它能够实现故障自己主动切换和自己主动修复功能成员节点的功能,各个DB之间的数据全然一致,大大减少了单点故障的风险. ...

  2. hibernate一对多关联关系

    想了几天,终于知道sql语句的发出问题.查了很多书,感觉都没有说清楚,有的还是错的.请看下面: <?xml version="1.0"?> <!DOCTYPE h ...

  3. RBAC - 基于角色的权限控制

    ThinkPHP中关于RBAC使用详解 自己的源码下载:百度网盘,thinkPHP文件夹下,RBAC文件夹. 重要的是,权限信息的写入函数等.在源码中能找到,Modules/Amin/Common/c ...

  4. ulipad双击无反应

    所有的东西都配好后,执行ulipad需要注意的是: 1,必须以管理员身份运行ulipad. 2,当运行有道词典的时候,双击ulipad是没有反应, 至于为什么会出现这种情况,我也不太清除,等我查到 原 ...

  5. [HDU 2553]--N皇后问题(回溯)/N皇后问题的分析

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2553 N皇后问题 Time Limit: 2000/1000 MS (Java/Others)     ...

  6. [Swust OJ 247]--皇帝的新衣(组合数+Lucas定理)

    题目链接:http://acm.swust.edu.cn/problem/0247/ Time limit(ms): 1000 Memory limit(kb): 65535   Descriptio ...

  7. [Swust 549]--变位词(vector水过)

    Time limit(ms): 1000 Memory limit(kb): 65535   Description 输入N和一个要查找的字符串,以下有N个字符串,我们需要找出其中的所有待查找字符串的 ...

  8. USACO March. 2012

    Connect the Cows Times17 水题 Landscaping Flowerpot Tractor 广搜 搜到边界就可以终止了 没什么难度 #include <stdio.h&g ...

  9. hadoop -- mapreduce执行过程

    1.运行mapreduce程序  ---run2.本次运行将会生成呢个一个Job , 于是JobClient向JobTracker申请一个JobID 标识该Job.3.JobClient将Job需要的 ...

  10. ZOJ 3211 Dream City DP 01背包 经典问题

    题目大意:JAVAMAN 到梦幻城市旅游见到了黄金树,黄金树上每天回结出金子.已经有n棵树,JAVAMAN要停留m天,每天只能砍掉一棵树,砍掉树后就能得到树上的黄金.给定n棵树上原有的黄金a[i]和每 ...