当前位置: 代码迷 >> QT开发 >> 求教QTreeWidget的itemClicked()解决方案
  详细解决方案

求教QTreeWidget的itemClicked()解决方案

热度:69   发布时间:2016-04-25 03:24:18.0
求教QTreeWidget的itemClicked()
   我自己写了类TreeWidget和类TreeItem,分别继承了QTreeWidget和QTreeWidgetItem,然后在类TreeWidget的构造函数中加入了 
connect( this, SIGNAL( itemClicked(QTreeWidgetItem*,int),this,SLOT(selectItem( QTreeWidgetItem*,int) ) ),运行时候发现itemClicked没有起到作用?求解。 
   是和继承有关系吗?还是我connect表达的有什么问题?
  

------解决方案--------------------
引用:
已经解决,原因如下:
Qt5之前:
    connect(sender, SIGNAL(signal), receiver, SLOT(slot));
Qt5开始:
    connect(sender, &Sender::signal, receiver, &Receiver::slot);
非常感谢 http://blog.sina.com.cn/s/blog_a6fb6cc90101epbg.html
博主是超级大好人一个。


这样写确实可以解决你所说的问题。但是,真正的原因是,不能在构造函数里connect signals & slots,更进一步说,是因为你在构造函数里用了 this 指针。构造函数里对象还没有构造完成,这个时候是不能够使用this指针的。
------解决方案--------------------
引用:
Quote: 引用:

已经解决,原因如下:
Qt5之前:
    connect(sender, SIGNAL(signal), receiver, SLOT(slot));
Qt5开始:
    connect(sender, &Sender::signal, receiver, &Receiver::slot);
非常感谢 http://blog.sina.com.cn/s/blog_a6fb6cc90101epbg.html
博主是超级大好人一个。


这样写确实可以解决你所说的问题。但是,真正的原因是,不能在构造函数里connect signals & slots,更进一步说,是因为你在构造函数里用了 this 指针。构造函数里对象还没有构造完成,这个时候是不能够使用this指针的。

构造函数里当然可以使用this啊,也可以connect,楼主之前的connect失败,可能是其他问题。
------解决方案--------------------
同意楼上,改成Qt5的函数指针肯定没问题,但这个写法本身应该也是可以的,失败应该是其它原因,可以debug一下,包括connect返回的值,看是否连接成功了。
  相关解决方案