Сначала вспомните о Минимально воспроизводимый пример . Это не только пример, но и минимальный . В этом случае ваш код печати не является обязательным.
После вашего вопроса, slot - это просто функция класса. И в вашем случае вы можете просто создать функцию печати, которая будет вызываться из кнопок 1 и 2.
Кроме того, не ждите настоящих волшебников c из sig / slots. Похоже, но нет. Подключение слота к сигналу - это просто виртуальный вызов функции B при вызове функции A.
Тогда давайте go немного углубимся в мир сигналов и слотов.
- Вы можете подключиться (слоты или сигналы) для сигналов. Другого пути нет.
- В основном сигналы и слоты используются для передачи данных между различными объектами или для информирования их о чем-либо.
// foo.h
class First {
...
signals:
void newData(QVariant val);
};
// bar.h
class Another {...
public slots:
void getNewData(QVariant val);
};
// main.cpp
Another another1;
First first1;
QObject::connect(first1, &First::newData, another1, &Another::getNewData);
Вы также можете создать что-то, что можно назвать «Дерево соединений», когда сигнал [Another :: sig1] подключен к [Third :: sig2], который подключен к сигналу [Fourth :: sig3] и слоту [Fifth :: slot1 ], и так далее. Я не уверен, что кому-то это действительно нужно, но будьте свободны в игре. AFAIK, единственная причина использовать соединение сигнал / слот внутри одного класса, это когда вам нужно передать некоторые данные в GUI поток из другого потока, работающего в GUI. Пожалуйста, не делайте этого в реальных проектах.