Qt继承自QPushButton的对象的clicked信号与定义的槽函数无法关联

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt继承自QPushButton的对象的clicked信号与定义的槽函数无法关联相关的知识,希望对你有一定的参考价值。

btn::btn(QWidget * parent) :

QPushButton(parent)


connect(this, SIGNAL(clicked()), this, SLOT(onClicked()));


然后运行时报QObject::connect: No such slot QPushButton::onClicked()
点击按钮onClicked()槽函数也没有执行
为什么会出现这样的情况?有什么方法解决这个问题?

参考技术A

    是否添加了Q_OBJECT宏

    如:

    class btn: public QPushButton Q_OBJECT ;

    是否声明和定义了槽onClicked

    如:

    public slots:
             void onClicked();

追问

是因为没有添加Q_OBJECT宏 不报错了但是不知道为什么onClicked()为什么没有执行
private slots:
void onClicked();

void btn::onClicked()



this->hide();

本回答被提问者采纳

Qt常见控件和操作

按钮——QPushButton 就是常见的按钮

信号:被点击

当按钮被点击就会发出 clicked 信号,可以这样指定处理该信号的函数

button.clicked.connect(handleCalc)

 

方法:改变文本

代码中可以使用 setText 方法来改变按钮文本,比如

button.setText(text)

 

方法:禁用、启用

所有控件(继承自QWidget类)都支持 禁用和启用方法。

禁用后,该控件不再处理用户操作

禁用
button.setEnabled(False)
启用
button.setEnabled(True)

单行文本框——QLineEdit 是只能单行编辑的文本框。

信号:文本被修改

当文本框中的内容被键盘编辑,被点击就会发出 textChanged 信号,可以这样指定处理该信号的函数

edit.textChanged.connect(handleTextChange)

 

方法:获取文本

通过 text 方法获取编辑框内的文本内容,比如

text = edit.text()

 

方法:设置提示

通过 setPlaceholderText 方法可以设置提示文本内容,比如

edit.setPlaceholderText(请在这里输入URL)

 

方法:设置文本

通过 setText 方法设置编辑框内的文本内容为参数里面的文本字符串,比如

edit.setText(你好)

原来的所有内容会被清除

 

方法:清除所有文本

clear 方法可以清除编辑框内所有的文本内容,比如

edit.clear()

 

方法:拷贝文本到剪贴板

copy 方法可以清除编辑框内所有的文本内容,比如

edit.copy()

 

方法:粘贴剪贴板文本

paste 方法可以把剪贴板内容,拷贝到编辑框当前光标所在处,比如

edit.paste()

 


 

以上是关于Qt继承自QPushButton的对象的clicked信号与定义的槽函数无法关联的主要内容,如果未能解决你的问题,请参考以下文章

Qt常见控件和操作

Qt常见控件和操作

Qt,两个QWidget对象之间的简单连接

QT学习——按钮相关接口,对象树概念

Qt编程问题.

QT分析之QPushButton的初始化