T qobject_cast<T>(QObject *object);
1、 进行安全的向下转型(派生类到基类),而不能用于向上转型(基类到派生类),否则返回空指针。
2、在声明时必须有Q_OBJECT宏。
3、T类型必须继承自QObject。
4、对象必须是通过 new 运算符创建的堆对象,而不是栈对象或全局对象。
类似于标准c++ dynamic_cast(),其优点是它不需要RTTI支持,并且可以跨动态库边界工作。
QLineEdit* lineEdit = qobject_cast<QLineEdit*>(sender());
connect(ui.edtIP, &QLineEdit::textChanged,
this, &CommunicateModify::onIPTextChanged);
我们首先需要确保发送信号的对象是一个QLineEdit对象,因为槽函数onIPTextChanged是用来处理QLineEdit对象的文本变化信号的。通过使用qobject_cast来进行类型转换,可以避免在处理信号时出现类型错误或空指针异常。
将发送信号的对象转换为QLineEdit类型的指针,并将结果存储在QLineEdit变量中。用于将一个QObject类型的指针转换为另一个继承自QObject的类的指针。
sender()是一个用于获取发送信号的对象指针的方法。