Qt--QGraphicsItem 子类中使用信号与槽

最近,在使用Qt做一个小软件,其中用到了QGraphicsItem,并且需要使用信号与槽机制.QGraphiIcs的子类要实现信号与槽机制需要继承QObject.

class Node : public QObject,public QGraphicsItem {
Q_OBJECT      
....
}

注意:一定要将public QObject放在public QGraphicsItem的前面,并且在该类的定义中添加Q_OBJECT宏.

编译时出现警告 Warning: Class Node implements the interface QGraphicsItem but does not list it in Q_INTERFACES. qobject_cast to QGraphicsItem will not work!

在类的声明中添加:Q_INTERFACES(QGraphicsItem)可解决该问题.

时间: 2024-10-02 20:26:27

Qt--QGraphicsItem 子类中使用信号与槽的相关文章

PyQt5中的信号与槽,js 与 Qt 对象之间互相调用

一.PyQt中的信号与槽 信号(Signal)和槽(Slot)是Qt中的核心机制,用在对象之间互相通信.在Qt中每个QObject对象和PyQt中所有继承自QWidget的控件(这些都是QObject的子对象)都支持信号与槽机制.当信号发射时,连接的槽函数将会执行.在PyQt5中信号与槽通过object.signal.connect()方法连接. 1.1 关于信号和槽的常识 Qt 提供了信号可以使用,当然你也可以QtCore.pySignal()来自定义信号 一个信号可以连接多个槽: 一个信号也

第78课 多线程中的信号与槽(上)

1. QThread类中的信号和槽 (1)QThread类拥有发射信号和定义槽函数的能力 (2)QThread中的关键信号 ①void started():线程开始运行时发射该信号 ②void finished():线程完成运行时发射该信号 ③void terminated():线程被异常终止时发射该信号 2. 与线程相关的概念 (1)线程栈 ①进程中存在栈空间的概念(区别于栈数据结构) ②栈空间专用于函数调用(保存函数参数.局部变量等) ③线程拥有独立的栈空间(可调用其它函数) ④只要函数体中

Qt中使用信号和槽的一点心得

信号(Signal)与槽(Slot)-Qt中的典型机制 这一篇文章中都说得很详细了,这里不再重复,只说一点在实际使用中可能会遇到的问题. 1.一个信号不要同时连接几个槽函数,不然执行的顺序是随机的,最后的结果可能会和自己期待的有出入. 2.基本上,所有的信号连接槽函数之后,会执行完当前连接的槽函数,然后再执行emit信号之后的内容.但是也会有意外的情况发生:如果当前信号里面要执行的内容过于复杂(e.g.slots中又包含emit信号,本身slots函数又比较复杂等等),会导致线程之间的混乱,可能

Qt中的信号和槽函数。

1:写一个close按钮当单击此按钮时就执行槽函数,而关闭窗口. 1 #include "slot.h" 2 #include <QApplication> 3 #include<QPushButton> 4 #include<time.h> 5 #ifndef SLOT_H 6 #define SLOT_H 7 #include <QMainWindow> 8 #include <QObject> 9 #include &l

Qt源码分析之信号和槽机制

Qt的信号和槽机制是Qt的一大特点,实际上这是和MFC中的消息映射机制相似的东西,要完成的事情也差不多,就是发送一个消息然后让其它窗口响应,当然,这里的消息是广义的说法,简单点说就是如何在一个类的一个函数中触发另一个类的另一个函数调用,而且还要把相关的参数传递过去.好像这和回调函数也有点关系,但是消息机制可比回调函数有用多了,也复杂多了 MFC中的消息机制没有采用C++中的虚函数机制,原因是消息太多,虚函数开销太大.在Qt中也没有采用C++中的虚函数机制,原因与此相同.其实这里还有更深层次上的原

Qt源码分析之信号和槽机制(QMetaObject是一个内部struct)

Qt的信号和槽机制是Qt的一大特点,实际上这是和MFC中的消息映射机制相似的东西,要完成的事情也差不多,就是发送一个消息然后让其它窗口响应,当然,这里的消息是广义的说法,简单点说就是如何在一个类的一个函数中触发另一个类的另一个函数调用,而且还要把相关的参数传递过去.好像这和回调函数也有点关系,但是消息机制可比回调函数有用多了,也复杂多了 MFC中的消息机制没有采用C++中的虚函数机制,原因是消息太多,虚函数开销太大.在Qt中也没有采用C++中的虚函数机制,原因与此相同.其实这里还有更深层次上的原

Qt Quick快速入门之信号、槽

信号和槽主要用于组件之间的通信,类似于.net和java中的委托. 使用QObject::connect方法将信号与槽关联起来,然后信号的发起者发出信号,接受者中的槽函数就会执行. 比如connect(this,SIGNAL(start()),worker,SLOT(Start())),将当前类中start信号关联到worker对象的Start函数,当我们调用emit this->start()时就发出信号,槽函数就会收到这个信号. connect函数还有第五个参数,这个参数决定信号何时传给槽,

QT5中的信号与槽与C++ 11的function的配合

最近将公司的界面开发库从WX转换到了QT,有了信号和槽,原本我们在使用WX的时候,为了使用信号,我们是使用BOOST的signal2库,到了QT有了信号槽,这个就没什么必要了 但是前段时间使用QT发现QT的信号和槽没有placeholder,也就是占位符,于是信号和槽声明只能严格地一样,比如 void slot(int val); void signal( int val); 但是在signals2,我们可用利用placeholder,及时函数声明不一样,也可用进行connect void sl

第八十课、多线程中的信号与槽(下)

一.线程体函数开启了事件循环,线程如何正常结束 1.QThread::exec()使得线程进入事件循环 (1).事件循环结束前,exec()后的语句无法执行 (2).quit()和exit()函数用于结束事件循环 (3).quit() <---->exit(0),exec()的返回值由exit()参数决定 2.注意 (1).无论事件循环是否开启,信号发送后会直接进入所依附线程的事件队列 (2).然而,只有开启了事件循环,对应的槽函数才会在线程中被调用  二.什么时候需要开启事件循环 1.设计原