2016-04-16 2 views
1

Я экспериментирую с дизайнерскими интерфейсами Qt. Одной из особенностей дизайнерского интерфейса является автоматическое подключение слотов виджета, если они следуют специальному шаблону имени («on _...»).Вручную вызовите connectSlotsByName()

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

Итак, можно ли явно контролировать, когда эти соединения установлены, то есть когда вызывается connectSlotsByName()?

ответ

3

Вы можете использовать QObject::blockSignals блокировать ненужные сигналы в течение некоторого времени, так:

widget->blockSignals(true); 
//do work 
widget->blockSignals(false); 

также вы можете позвонить disconnect и затем connect для конкретных сигналов.

+0

Это хорошие обходные пути. Благодарю. Я решил полностью избежать автоматической функции. (в дополнение к вышеупомянутой проблеме самоподключенные соединения позволяют проверять время соединения соединений). – Silicomancer

+0

Существует также расширение статического anaylyzer clang, которое может проверять сгенерированные соединения сигналов/слотов во время компиляции http://reviews.llvm.org/D14592 и автономный инструмент https://github.com/etaoins/qconnectlint – fghj

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