السلام عليكم ورحمة الله
أخوانى انا لدى استفسار حول فهم اﻻتصال بين فئة للواجهة الرسومية وواجهة للكود.
حقيقة انا ليس لدى مشكلة فى فهم الكود عندما يكود المعاجة مدمج مع كود الواجهة لكن المشكلة عن الفصل.
لدينا:
1.ملف تعريف والكود التنفيذى لفئة الواجهة:
/// bytconverterdailog.h
#ifndef BYTECONVERTERDAILOG_H
#define BYTECONVERTERDAILOG_H
#include <QDialog>
namespace Ui {
class ByteConverterDailog;
}
class ByteConverterDailog : public QDialog
{
Q_OBJECT
public:
explicit ByteConverterDailog(QWidget *parent = 0);
~ByteConverterDailog();
private:
Ui::ByteConverterDailog *ui;
};
#endif // BYTECONVERTERDAILOG_H
#include "byteconverterdailog.h"
#include "ui_byteconverterdailog.h"
// byteconverter.cpp
#include "byteconverter.h"
ByteConverterDailog::ByteConverterDailog(QWidget *parent) :
QDialog(parent),
ui(new Ui::ByteConverterDailog)
{
ui->setupUi(this);
byteConverter *bc = new byteConverter(this);
connect(ui->decEdit, SIGNAL(textChanged(QString)),bc,SLOT(setDec(QString)));
connect(ui->binEdit, SIGNAL(textChanged(QString)),bc,SLOT(setBin(QString)));
connect(bc, SIGNAL(decChanged(QString)),ui->decEdit,SLOT(setText(QString)));
connect(bc, SIGNAL(binChanged(QString)),ui->binEdit,SLOT(setText(QString)));
}
ByteConverterDailog::~ByteConverterDailog(){
delete ui;
}2.ملف تعريف والكود التنفيذى لفئة معالجة البيانات.
/// byteconverter.h
#ifndef BYTECONVERTER_H
#define BYTECONVERTER_H
#include <QObject>
class byteConverter : public QObject
{
Q_OBJECT
public:
explicit byteConverter(QObject *parent = 0);
signals:
void decChanged(const QString &);
void binChanged(const QString &);
public slots:
void setDec(const QString &);
void setBin(const QString &);
};
#endif // BYTECONVERTER_H
// byteconverter.cpp
#include "byteconverter.h"
byteConverter::byteConverter(QObject *parent) :
QObject(parent)
{
}
void byteConverter::setDec(const QString &newvalue){
emit binChanged(newvalue);
}
void byteConverter::setBin(const QString &newvalue){
emit decChanged(newvalue);
}الدالة الرئيسية:
// main.cpp
#include <QtGui/QApplication>
#include "byteconverterdailog.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
ByteConverterDailog w;
w.show();
return a.exec();
}انا مشكلتى فى فهم هذا لسطر بملف byteconverterdailog.cpp فقط.
connect(bc, SIGNAL(decChanged(QString)),ui->decEdit,SLOT(setText(QString)));
أريد فهم آلية اﻻتصال بين الفئة المعالجة والفئة الرسومية فى استقبال وارسال اﻻشارات ...
وعلاقتة أيضا بالسطر :
connect(ui->decEdit, SIGNAL(textChanged(QString)),bc,SLOT(setDec(QString)));
وجزاكم الله خير .





