gpt4 book ai didi

c++ - 未调用 QLineEdit textChanged 信号

转载 作者:行者123 更新时间:2023-11-30 01:08:06 26 4
gpt4 key购买 nike

我想将 textChanged 信号连接到 QLineEdit,但它从未被调用:

class Dialog : public QDialog
{
Q_OBJECT

public:
Dialog();
virtual ~Dialog();
QLineEdit *nameEdit;

public slot:
void nameChanged(const QString &);
};

.c文件:

Dialog::Dialog()
{

nameEdit=new QLineEdit;
connect(nameEdit, SIGNAL(textChanged(const QString &)), this, SLOT(nameChanged(const QString &)));
...
}

void Dialog::nameChanged(const QString & txt)
{
// NEVER CALLED
}

我做错了什么?

最佳答案

如果连接出现问题,旧式通常会在控制台/终端中写入调试消息。由于您没有控制台,我强烈建议您立即停止使用信号和槽的风格,并使用使用现代函数绑定(bind)的新形式:

connect(nameEdit, &QLineEdit::textChanged, this, &Dialog::nameChanged);

试试这个,看看它是否编译。如果没有,则意味着其中一个信号/插槽过载,在这种情况下,您需要静态转换为要连接的过载。编译错误的另一个原因是您的连接不兼容。

优点:

  1. 一旦编译成功,它就可以工作了
  2. 它是在编译时解决的,而不是运行时,所以速度更快
  3. 它不使用字符串来解析函数名

PS:为了全面披露,这个人将 nameChanged() 作为公共(public)插槽(检查他的编辑),然后他将其更改为信号……不知道那里发生了什么。

关于c++ - 未调用 QLineEdit textChanged 信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43198993/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com