2013-12-12 4 views
0

Я работаю над инструментом, в главном окне инструмента есть несколько виджетов Qt, добавленных на нем. Когда мы использовали RMB, нажмите на виджет Qt, появится контекстное меню (и через eventFilter вызывается несколько функций), чтобы выполнить требуемую работу, слот doTask() вызывается с объектом-получателем.Как связаться с Qt-виджетами с помощью внешней команды?

Теперь я должен добавить в окно, которое должно скопировать все функции контекстного меню ПКМ меню баннера. Поскольку это меню баннера не относится к Qt, но записано в некоторых внутренних функциях (скажем, LISP), у меня возникают проблемы с вызовом этой функции слота - doTask(), так как я не знаю, что такое объект-получатель.

Как я могу общаться с виджетом Qt через какой-либо внешней команды/языка?

Пожалуйста, добавьте комментарий, если в этом нет ничего непонятного.

ответ

1

Вы можете не подвергать простой метод стиля C от объекта осознает QT, который действует как прокси-сервер для игровых вызовов. т. е. метод баннеров, метод затем вызывает соответствующие интервалы?

+0

Привет Gaz, я новичок в QT и не знаю много о QT осознает объект, и это может быть стандартный вопрос Qt. Если вы могли бы предоставить любую ссылку или любой учебник, чтобы больше узнать о том, что вы предлагаете, это было бы очень полезно. – Maverick33

+0

«Объект, поддерживающий Qt» - это в основном любой объект, который скомпилирован с помощью инструмента MOC QT и поэтому может иметь «сигналы». Но это не решает проблему; вы знаете, что нужно выяснить, что это за объект _that_. – MSalters

1

Ваша основная проблема - просто знать объект-получатель. Как только вы это сделаете, вы можете вызвать его слот напрямую (не нужно проходить через сигнал).

Меню знает об этом, потому что он хранит указатель на объект приемника. Ваше собственное меню баннера должно сделать то же самое. «Поэтому он не знает, что объект-приемник» должен быть исправлен.

+0

Спасибо за разъяснение, MSalters. – Maverick33

+0

Не могли бы вы помочь мне в этих запросах. Какой был бы лучший способ исправить эту проблему «Он не знает объект-получатель», следует ли использовать функцию findChildren Qt для поиска этого конкретного объекта-получателя или любого другого подхода? И если я скажу, что меню баннера должно работать только тогда, когда выбрана ячейка определенного виджета (например, если вы выберете что-то в виджетах, тогда только вы должны использовать меню баннера). Будет ли эта информация помогать в поиске объекта приемника? Фактически я работаю, чтобы скопировать функциональные возможности контекстного меню RMB в меню баннеров. – Maverick33

+0

Посмотрите, Qt сигналы в основном просто система обмена сообщениями. Мы можем помочь вам с частью Qt, но вы единственный, кто знает, какой объект должен получить сигнал. Мы этого не делаем, а ваша программа - нет. Для клика RMB Qt может определить, что получатель - это виджет под указателем мыши. – MSalters

Смежные вопросы