刚写了一个小程序测试了一下,本来想实现在一个
界面中点击一个
按钮然后通过信号发送一个字符串给另外一个界面,并
显示在另外一个界面的
文本框中,按照想法写了之后发现不能实现,
报错内容如下:
[size=; font-size:10pt,10pt]
[font='Courier']Object::connect: No such signal Form::sendstr(string) in [size=; font-size: 10pt,10pt]..\singaltest\widget.cpp:11[size=; font-size:10pt,10pt]
[font='Courier']Object::connect: (sender name: 'Form')[size=; font-size:10pt,10pt]
[font='Courier']Object::connect: (receiver name: 'Widget')[size=; font-size:10pt,10pt]
[font='Courier']
下面具体说下我是怎么实现的,大家帮我看看我哪里有问题,主界面为widiget类,上面有一个文本框,我在此类中实现一个槽,用于将另外一个类中发送过来的字符串显示在主界面的文本框中
下面两个文件时主界面的widget.h文件- #ifndef WIDGET_H
- #define WIDGET_H
- #include <QWidget>
- #include "form.h"
- #include <QDebug>
- namespace Ui {
- class Widget;
- }
- class Widget : public QWidget
- {
- Q_OBJECT
-
- public:
- explicit Widget(QWidget *parent = 0);
- ~Widget();
- public slots:
- void getstr(QString str1);
-
- private:
- Ui::Widget *ui;
- QString string;
- Form *f;
- };
- #endif // WIDGET_H
widget.cpp文件
- #include "widget.h"
- #include "ui_widget.h"
- Widget::Widget(QWidget *parent) :
- QWidget(parent),
- ui(new Ui::Widget)
- {
- ui->setupUi(this);
- f = new Form();
- connect(f,SIGNAL(sendstr(string)),this,SLOT(getstr(string)));
- f->show();
- }
- Widget::~Widget()
- {
- delete ui;
- }
- void Widget::getstr(QString str1)
- {
- ui->lineEdit->setText(str1);
- qDebug()<<str1;
- }
下面是另外一个界面的类
form.h文件- #ifndef FORM_H
- #define FORM_H
- #include <QWidget>
- namespace Ui {
- class Form;
- }
- class Form : public QWidget
- {
- Q_OBJECT
-
- public:
- explicit Form(QWidget *parent = 0);
- ~Form();
-
- private:
- Ui::Form *ui;
- QString string;
- signals:
- void sendstr(QString str2);
- private slots:
- void on_pushButton_clicked();
- };
- #endif // FORM_H
form.cpp
- #include "form.h"
- #include "ui_form.h"
- #include <QDebug>
- Form::Form(QWidget *parent) :
- QWidget(parent),
- ui(new Ui::Form)
- {
- ui->setupUi(this);
- }
- Form::~Form()
- {
- delete ui;
- }
- void Form::on_pushButton_clicked()
- {
- string = "fuck you ass";
- emit sendstr(string);
- qDebug()<<"emit";
- }
大家看看我什么地方写错了,为什么不能实现??,
程序运行界面如下