Как я создаю пользовательский слот в qt4 разработчике?

Теперь, когда прошло больше времени, вот как это сделать в Java 8:

URLConnection conn = url.openConnection();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8))) {
    pageText = reader.lines().collect(Collectors.joining("\n"));
}
21
задан Honest Abe 22 August 2015 в 23:37
поделиться

6 ответов

К сожалению, это не возможно в Qt4.

В Qt3 Вы могли создать пользовательские слоты который, где тогда реализовано в ui.h файле. Однако Qt4 не использует этот файл, таким образом, пользовательские слоты не поддерживаются.

существует некоторое обсуждение этой проблемы, законченной на QtForum

4
ответ дан David Dibben 29 November 2019 в 06:20
поделиться

Это не представляется возможным простым способом.

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

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

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

3
ответ дан ekhumoro 29 November 2019 в 06:20
поделиться

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

необходимо создать собственное QWidget в конечном счете путем разделения на подклассы существующего. Тогда интегрируя его в спокойного Разработчика как плагин, как предложено. Наличие Вашего собственного класса позволяет Вам add/modifiy сигналы/слоты, доступные, как Вы хотите.

2
ответ дан Pierre 29 November 2019 в 06:20
поделиться

Можно использовать волшебный формат слота

void on_objectName_signal() {
// slot code here, where objectname is the Qt Designer object name
// and the signal is the emission
}

, соединение с этим методом устанавливается методом connectSlotsByName и каждый раз, когда сигнал испускается, этот слот вызывается.

2
ответ дан ololuki 29 November 2019 в 06:20
поделиться

Не забывайте о функциях автосоединения слота. Существует несколько недостатков, как необходимость переименовать Вашу функцию, если Вы переименовываете свой виджет, но мы используем тех много в моей компании.

2
ответ дан Caleb Huitt - cjhuitt 29 November 2019 в 06:20
поделиться

Кажется, это возможно в версии Qt Designer 4.5.2, но это невозможно сделать из док-виджета Редактора сигналов / слотов в главном окне.

Это то, что у меня сработало

  1. Переключитесь на Редактировать сигналы / слоты режим (F4)
  2. Перетащите мышью из виджета, который должен излучать сигнал, на виджет, который должен принимать сигнал.
  3. Появится диалоговое окно Настроить соединение , показывающее сигналы для излучающий виджет и слоты для принимающего виджета. Нажмите Изменить ... под столбцом слотов справа.
  4. Появится диалоговое окно Сигналы / слоты ReceivingWidget . Здесь можно щелкнуть значок плюса под слотами, чтобы добавить новый слот с любым именем.
29
ответ дан 29 November 2019 в 06:20
поделиться
Другие вопросы по тегам:

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