Как вручную вызвать сигнал другого управления испустить?

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

5
задан Ahmad 3 July 2010 в 21:27
поделиться

5 ответов

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

5
ответ дан 14 December 2019 в 04:29
поделиться

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

3
ответ дан 14 December 2019 в 04:29
поделиться

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

0
ответ дан 14 December 2019 в 04:29
поделиться

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

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

0
ответ дан 14 December 2019 в 04:29
поделиться

для генерации сигнала просто напишите

emit 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

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

0
ответ дан 14 December 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: