下記のコードは、T_warikomi.pro、counter.h、counter.cpp、sample.cppの各ファイルから
できています。
QObject::connect(&a, SIGNAL(valueChanged(int)), &b, SLOT(setValue(int)));
によりまして、counterクラスbへの割込は実現出来ますが、同時にmainの”void setValue(int a)”
への割込を行う事は出来ますか?
//T_warikomi.pro===========================
TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
Input
HEADERS += counter.h
SOURCES += counter.cpp sample.cpp
//counter.h============================
#include "QObject"
#include "QTextStream"
class Counter : public QObject
{
Q_OBJECT
public:
Counter(const QString sname);
int value() const;
public slots:
void setValue(int value) ;
signals:
void valueChanged(int newValue);
private:
int m_value;
QString m_name;
};
//counter.cpp=========================
#include "counter.h"
Counter::Counter(const QString sname)
{
m_value = 0;
m_name = sname;
}
int Counter::value() const
{
return m_value;
}
void Counter::setValue(int value)
{
QTextStream out(stdout);
if (value != m_value) {
m_value = value;
out << "send:[" << m_name << "] " << value << endl;
emit valueChanged(value);
//out << "completed:[" << m_name << "] " << value << endl;
} else {
out << "Ignore:[" << m_name << "] " << value << endl;
}
}
//sample.cpp=====================
#include "QObject"
#include "counter.h"
void setValue(int a);
int main(int argc, char *argv[])
{
Counter a("a");
Counter b("b");
QObject::connect(&a, SIGNAL(valueChanged(int)), &b, SLOT(setValue(int)));
QObject::connect(&a, SIGNAL(valueChanged(int)), this, SLOT(setValue(int)));//<---ここです
a.setValue(12);
//a.setValue(13);
//b.setValue(48);
}
void setValue(int a){
qDebug("main_accessed");
}
以上宜しくお願いします。
注)質問の方法、書き方についてコメント頂きますと、訂正しますので宜しく。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。