初學者,想實作在子視窗中,點擊close的按鍵,signal類emit 出 mysignal()信號,列印“emit success”,然后Widget::kong的槽函式接收到,列印“slot kong accept success”。
但是目前的情況是,Widget::kong的槽函式無回應。只有“emit success”列印出來,求大神幫忙看看是怎么回事,十分感謝!
工程檔案如下圖

signal.h檔案如下
#ifndef SIGNAL_H
#define SIGNAL_H
#include <QWidget>
#include <QPushButton>
namespace Ui {
class Signal;
}
class Signal : public QWidget
{
Q_OBJECT
public:
explicit Signal(QWidget *parent = 0);
~Signal();
signals:
void Mysignal();
public slots:
void on_pushButton_clicked();
private:
Ui::Signal *ui;
};
#endif // SIGNAL_H
widget.h檔案如下:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QPushButton>
#include <QLineEdit>
#include "signal.h"
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
[code=c]public:
explicit Widget(QWidget *parent = 0);
~Widget();
public slots:
void kong();
private:
Ui::Widget *ui;
Signal s;
};
#endif // WIDGET_H
main.cpp檔案如下:
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
Signal s;
s.show();
return a.exec();
}
signal.cpp檔案如下:
#include "signal.h"
#include "ui_signal.h"
#include <QDebug>
Signal::Signal(QWidget *parent) :
QWidget(parent),
ui(new Ui::Signal)
{
ui->setupUi(this);
}
Signal::~Signal()
{
delete ui;
}
void Signal::on_pushButton_clicked()
{
emit Mysignal();
qDebug() << "emit success";
}
widget.cpp檔案如下:
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
connect(&s,SIGNAL(Mysignal()),this,SLOT(kong()));
}
Widget::~Widget()
{
delete ui;
}
void Widget::kong()
{
qDebug() << "slot kong accept success";
}
最后的運行結果:

點擊close按鈕,只有emit success 列印出來。
(做了實驗:將main.cpp,中的
Signal s;
s.show();
改為在signal.cpp中this->show(),則kong的槽函式正常回應。但是,因為還是需要在其他的類函式中實作
Signal s;
s.show();
kong函式還是無回應,各位大神幫忙看看是怎么回事,十分感謝!
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/214332.html
標籤:Qt
上一篇:QT創建帶密碼的PDF
