• 16854阅读
  • 12回复

QTableWidget中的信号函数cellClicked ( int row, int column )怎么不起作用 [复制链接]

上一主题 下一主题
离线磐石
 
只看楼主 倒序阅读 楼主  发表于: 2009-11-29
在程序中使用了QTableWidget类,它里面有个信号函数是这样定义的,
void QTableWidget::cellClicked ( int row, int column )   [signal]
This signal is emitted whenever a cell in the table is clicked. The row and column specified is the cell that was clicked.
我在程序中,建立了如下的信号和槽的连接
connect(tableWidget,SIGNAL(cellClicked(0,0)),this,SLOT(cellselect()));
但是发现点击第一格时,没有调用cellselect()函数,
请问一下,难道是我这样使用不对吗,程序中其它信号和槽的连接是没问题的
不怕做不到,只怕想不到
离线dbzhang800

只看该作者 1楼 发表于: 2009-11-29
SIGNAL(cellClicked(0,0))

显然不对
离线kummar
只看该作者 2楼 发表于: 2009-11-29
引用第1楼dbzhang800于2009-11-29 15:21发表的  :
SIGNAL(cellClicked(0,0))
显然不对

看不出哪里错的啊,高手说明白点,我也学习一下,呵呵
离线磐石
只看该作者 3楼 发表于: 2009-11-30
引用第1楼dbzhang800于2009-11-29 15:21发表的  :
SIGNAL(cellClicked(0,0))
显然不对

恩,那这个函数应该怎么用呢,谢谢,
这个与QPushButton 中的clicked()有什么区别呢,不是只要按钮一点击,就激发clicked()信号了吗,那为什么QTableWidget中的cellCicked()就不能这样用呢
不怕做不到,只怕想不到
离线dbzhang800

只看该作者 4楼 发表于: 2009-11-30
引用第3楼磐石于2009-11-30 11:06发表的  :
恩,那这个函数应该怎么用呢,谢谢,
这个与QPushButton 中的clicked()有什么区别呢,不是只要按钮一点击,就激发clicked()信号了吗,那为什么QTableWidget中的cellCicked()就不能这样用呢


你这个类比不是太恰当,如果和 QComboBox 的 activated 类比就很好了。

尽管如此,还是你的QPushButton为例

你可以写成:
connect(... SIGNAL(clicked()) ...)
connect(... SIGNAL(clicked(bool) ...)

但你写成:
connect(... SIGNAL(clicked(true)) ...)
connect(... SIGNAL(clicked(false)) ...)
就不对了
离线磐石
只看该作者 5楼 发表于: 2009-11-30
引用第4楼dbzhang800于2009-11-30 11:25发表的  :
你这个类比不是太恰当,如果和 QComboBox 的 activated 类比就很好了。
尽管如此,还是你的QPushButton为例
.......

恩,谢谢,谢谢,我改成这样就行了
connect(tableWidget,SIGNAL(cellActivated (int ,int)),this,SLOT(cellClicked()));
那我再问一下,那怎样把它的坐标传给槽函数呢
不怕做不到,只怕想不到
离线dbzhang800

只看该作者 6楼 发表于: 2009-11-30
引用第5楼磐石于2009-11-30 12:21发表的  :
恩,谢谢,谢谢,我改成这样就行了
connect(tableWidget,SIGNAL(cellActivated (int ,int)),this,SLOT(cellClicked()));
那我再问一下,那怎样把它的坐标传给槽函数呢

或许你可以考虑看看 "C++ GUI Qt4 编程" 一书中的第一章
离线sunday1118
只看该作者 7楼 发表于: 2009-11-30
connect(tableWidget,SIGNAL(cellActivated (int ,int)),this,SLOT(cellClicked(int,int)));
离线紫霞风语
只看该作者 8楼 发表于: 2009-11-30
其实就是信号函数和槽函数的变量要一致
离线磐石
只看该作者 9楼 发表于: 2009-11-30
引用第7楼sunday1118于2009-11-30 13:22发表的  :
connect(tableWidget,SIGNAL(cellActivated (int ,int)),this,SLOT(cellClicked(int,int)));

如果这样的话,怎样把我参数传给cellClicked(int,int)呢,它里面没有形参啊?
我试了这样的方式
connect(tableWidget,SIGNAL(cellActivated (int ,int)),this,SLOT(cellClicked(int x,int y)));
还是不行的
不怕做不到,只怕想不到
离线dbzhang800

只看该作者 10楼 发表于: 2009-11-30
引用第9楼磐石于2009-11-30 16:54发表的  :
如果这样的话,怎样把我参数传给cellClicked(int,int)呢,它里面没有形参啊?
我试了这样的方式
connect(tableWidget,SIGNAL(cellActivated (int ,int)),this,SLOT(cellClicked(int x,int y)));
还是不行的


建议看看 "C++ GUI Qt4 编程" 一书中的第1章,然后好好看看Qt自带的manual,然后再继续写你的程序。
离线磐石
只看该作者 11楼 发表于: 2009-11-30
引用第10楼dbzhang800于2009-11-30 17:07发表的  :
建议看看 "C++ GUI Qt4 编程" 一书中的第1章,然后好好看看Qt自带的manual,然后再继续写你的程序。

恩,谢谢,问题解决。
在相关资料里看到了这样一句话:Qt的“信号和槽”的机制可以保证如果你把一个信号和一个槽连接起来,槽会在正确的时间使用信号的参数而被调用。
不怕做不到,只怕想不到
离线timleaf

只看该作者 12楼 发表于: 2009-12-03
可以这样用吧:connect(tableWidget,SIGNAL(cellClicked (int ,int)),this,SLOT(slotFun(int,int)));slotFun是定义的槽函数,在其中判断传递的两个参数是不是都是0,若是再1行1列被单击了,否则什么也不做。。。。。。
爱你选择的,选择你所爱的……
快速回复
限100 字节
 
上一个 下一个