Я пытаюсь спроектировать библиотеку Qt, которая возвращает выходные данные клиентскому коду с помощью сигналов, но я не могу полностью разобраться с этим, я думаю, что-то не так.
Скажите, библиотекапредоставляет один класс A
следующим образом:
class A {
public:
void request(int data);
signals:
void response(int res);
}
Таким образом, клиентский код создает экземпляр A
, подключает свой сигнал к слоту и вызывает request ().Сначала я решил использовать сигнал для возврата выходных данных, потому что для разработки ответа А требуется некоторое время, поэтому я хочу, чтобы этот вызов был неблокирующим.
Моя проблема: что, если мне нужно позвонить request()
в разных местах моего кода, и делаю ли я разные вещи после получения ответа?Я думаю, что вопрос в корне заключается в правильном использовании дизайна сигнала / слота Qt.
Чтобы привести конкретный пример и, надеюсь, объяснить себя дальше, я временно решил проблему установки логического значения до request()
дляНапомните мне, какой путь казни выбрать позже:
void doingThis() {
doingThis = true;
request(data);
}
...
void doingThat() {
doingThis = false;
request(data);
}
...
public mySlot(int res) {
if (dointThis) {
...
} else {
...
}
}
Это отвратительно.Что я делаю не так?