Обратный звонок для кнопки в Qt Designer? - PullRequest
4 голосов
/ 31 января 2010

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

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

Ответы [ 2 ]

10 голосов
/ 31 января 2010

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

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

Сначала мы объявляем новый слот в вашем классе окна:

private slots:
  void clickMenuButton();

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

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

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

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

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

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

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

0 голосов
/ 31 января 2010

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

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

...