Как вручную заставить сигнал другого элемента управления излучать? - PullRequest
5 голосов
/ 04 июля 2010

Я хотел бы знать, возможно ли испускать какой-то определенный сигнал посредством кодирования. Например, я хочу отправить событие нажатия другой кнопки без фактического нажатия пользователем этой кнопки. Могу ли я это сделать?

Ответы [ 6 ]

5 голосов
/ 04 июля 2010

Вы можете вызвать функцию click этой другой кнопки.Он будет издавать сигнал щелчка.

3 голосов
/ 04 июля 2010

Вместо испуская сигнал самостоятельно и подключая его к слоту, почему вы не можете вызвать слот напрямую ?Слоты, как и другие функции C ++, в том смысле, что вы можете вызывать их напрямую.Я не вижу причин, по которым вы излучаете заранее определенный сигнал (например, clicked()). Просто позвоните в свой слот напрямую .

0 голосов
/ 18 апреля 2017

если вы установили действие для кнопки, вы также можете просто вызвать действие, которое будет инициировано.Просто используйте action_of_the_button->trigger();!

0 голосов
/ 04 июля 2010

чтобы испустить сигнал, который вы только что написали

испускать signalName (список параметров);

#include <QObject>

 class myClass : public QObject
 {
     Q_OBJECT

 public:
     myClass (QObject *parent = 0) : QObject(parent) { }
     void foo();

 signals:
     void mySignal(int param);
 };

void myClass::foo() { emit mySignal(5); }

подробнее на http://doc.qt.io/qt-4.8/signalsandslots.html

вы также можете подключить сигналк другому сигналу, так что вы можете подключить mysignal к сигналу нажатия кнопок, и когда ваш сигнал испускается, сигнал нажатия также будет генерироваться, см. http://doc.qt.io/qt-4.8/qobject.html#connect

0 голосов
/ 04 июля 2010

Qt, через moc, реализуйте ключевое слово emit, которое позволяет вам излучать сигналы посредством кодирования.

Если используемый вами класс не предоставляет метод для генерации некоторого сигнала, вы можете использовать Subclassэто, и реализовать функцию, которая делает это самостоятельно.Но должен сказать, что никогда не делал этого для «нормальных» сигналов.Только сделал это, когда я определил свои собственные сигналы в некотором расширении класса.

0 голосов
/ 04 июля 2010

Сигналы внутренне реализованы как функции-члены, защищенные C ++, поэтому я бы не советовал этого делать.(Они общедоступны в Qt 5, хотя это все еще не рекомендуется в качестве общего решения.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...