我有这堂课:
class CustomEdit : public QTextEdit
{
Q_GADGET
public:
CustomEdit(QWidget* parent);
public slots:
void onTextChanged ();
};
CustomEdit::CustomEdit(QWidget* parent)
: QTextEdit(parent)
{
connect( this, SIGNAL(textChanged()), this, SLOT(onTextChanged()));
}
void CustomEdit::onTextChanged ()
{
// ... do stuff
}
当我在编辑控件中输入文本时,永远不会调用onTextChanged
方法
我错过了什么?
答案 0 :(得分:1)
所有包含信号或槽的类必须在声明的顶部提及Q_OBJECT。它们还必须(直接或间接)从QObject派生。
尝试使用Q_OBJECT
答案 1 :(得分:1)
其他几种可能性:
1)阻止发出信号的对象(参见QObject :: blockSignals())
2)接收者没有线程亲和力。如果创建接收器的线程对象消失而接收器没有移动到另一个线程,它将不处理事件(插槽是特殊情况)。
答案 2 :(得分:1)
我在一段时间内用自己的代码解决了一天的另一种可能性: