2010-01-31 4 views
3

Я только начал использовать QtCreator сегодня, и кажется, что он помещает весь интерфейс в файл ui. Я последовал за учебником, чтобы создать ресурс для своих значков, затем я добавил их в строку меню вверху.Обратный звонок для кнопки в Qt Designer?

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

ответ

10

Элементы строки меню: Объекты действия. Чтобы что-то сделать, когда они были нажаты, вам нужно поймать сигнал triggered() от действия. Подробнее о сигналах и слотах here.

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

Во-первых, мы объявляем новый слот в классе окна:

Затем, в конструкторе, вам необходимо подключить сработавшего сигнал к новой слот:

connect(ui.actionObject, SIGNAL(triggered()), this, SLOT(clickMenuButton())); 

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

И только так, clickMenuButton() будет вызываться всякий раз, когда нажимается действие.

Как я уже говорил, Qt может также automatically connect signals to slots. Недостатком здесь является то, что вы не можете изменить имя слота, но вам также не нужно его подключать.

Qt Creator поддерживает создание слотов для виджетов: в случае действия вашего меню вы должны обратиться к разработчику формы, и вы должны увидеть список действий в вашей форме (если вы этого не сделаете, найдите Редактор действий). Щелкните правой кнопкой мыши действие, которое вы хотите, и нажмите Перейти к слоту .... Там, дважды щелкните triggered().

Qt Creator откроет новый слот в редакторе кода, и вы сможете делать все, что хотите!

+0

Большое вам спасибо, это было прекрасно! – 2010-01-31 13:19:03

0

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

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

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

  • Нет связанных вопросов^_^