Я хочу выполнить слот в другом классе. Является ли это возможным
UI_CDSK Obj;
connect(Obj.penDrive,SIGNAL(clicked()),this,SLOT( Obj.caller()));
Этот код находится в другом классе, и из этого класса я хочу выполнить слот другого класса (UI_CDSK)
Здесь penDrive и вызывающий абонент принадлежит классу функции UI_CDSK, а упомянутый код находится в другом классе.
2 ответа
Это немного сложно, не зная внутреннего устройства UI_CDSK, но правильный синтаксис должен быть таким:
connect( Obj.penDrive, SIGNAL(clicked()), Obj, SLOT(caller()) );
Пока caller()
является общедоступным слотом в UI_CDSK.
Метод подключения принимает указатель в качестве объекта-получателя, поэтому, если Obj не является указателем на объект UI_CDSK:
connect(Obj.pendrive, SIGNAL(clicked()), &Obj, SLOT(caller()));
Также это, вероятно, уже сделано (иначе ваш компилятор пожаловался бы), но чтобы использовать механизм сигнальных слотов Qt, ваш класс UI_CDSK должен унаследовать от QObject.
Похоже, слот не обязательно должен быть общедоступным.
Похожие вопросы
Новые вопросы
qt
Qt - это кроссплатформенная среда разработки приложений, широко используемая для разработки прикладного программного обеспечения, которая может работать на различных программных и аппаратных платформах с минимальными изменениями в базовом коде или без таковых, при этом обладая мощью и скоростью собственных приложений. Qt доступен как с коммерческими, так и с открытыми лицензиями.