К вопросу о переносимости кода и некоторых возможностях использования кроссплатформенного программного обеспечения - page 7

О переносимости кода и кроссплатформенном программном обеспечении
7
С точки зрения разработчика, система сигнал/слот состоит из
трех частей:
1) сигналы;
2) слоты;
3) менеджер соединений.
Сигнал — это некий именованный объект, который может хра-
нить в себе данные. Слот — это в общем случае указатель на некото-
рую функцию, которой будет передан объект типа Сигнал. Менеджер
соединений — набор функций, который обеспечивает соединение
сигналов и слотов, а также доставку сигналов по их назначению.
Самая простая часть в реализации — сигналы. Учитывая предо-
ставляемые требования, реализация
сигнала
для рассматриваемого
случая может иметь вид
class
Signal
{
….
}
Слоты:
void on_ spnMatrix1NRow_valueChanged(int nrow);
void on_ spnMatrix1NCol_valueChanged(int ncol);
void on_ spnMatrix2NRow_valueChanged(int nrow);
void on_ spnMatrix2NCol_valueChanged(int ncol);
void setStretch(QTableWidget *table);
void setCentered(QTableWidget *table);
void fillZero(QTableWidget *table);
void makeGood(QTableWidget *table);
void on_btnTranspose_clicked();
qreal value(QTableWidget *table, int I, int j);
Менеджер сигналов должен реализовывать набор базовой функ-
циональности [5].
1. Регистрация слота необходима для того, чтобы менеджер
узнал, что такой слот вообще существует; при этом множество сиг-
налов связываются со множеством слотов.
2. Отмена регистрации слота — соответственно, нужна, чтобы
забыть о слоте. При этом здесь необходимо также отсоединить все
сигналы от данного слота, что позволяет по имени слота найти соот-
ветствующий объект.
3. Соединение и рассоединение сигнала и слота (connect/
disconnect) необходимы, чтобы задать соответствие слота и сигнала;
при этом соединение слота сводится к одной вставке в SignalMap.
А его отсоединение — задача более сложная, требует удалить из
SignalMap все записи для указанного сигнала;
4. Посылка сигнала — такой метод, который должен обеспечи-
вать поиск слота и отправку ему сигнала. Также важно иметь воз-
1,2,3,4,5,6 8
Powered by FlippingBook