Qt GUI соединение - PullRequest
       17

Qt GUI соединение

1 голос
/ 19 сентября 2009

Я только начинаю с QT. Я прочитал некоторые уроки, и я думаю, что у меня есть понимание сигналов и слотов. Я пишу графический интерфейс с различными кнопками, которые изменяют состояние моей основной программы. Так, например, в приложении для рисования вы должны выбрать разные инструменты рисования (используя различные кнопки).

Как лучше всего это сделать? Моей первой мыслью было попытаться подключить сигнал нажатия кнопки PushButton к некоторой функции, которая устанавливает переменную current_tool. Я провел поиск и не смог найти способ подключить сигнал QObject к обычной функции.

Это наводит меня на мысль, что, возможно, существует другой подход. Тот, где я создаю новый QObject (то есть мое собственное расширение), который имеет различные свойства GUI. Затем я бы определил здесь свои слоты для различных кнопок.

Каков наилучший способ сделать это в QT. Я новичок и не знаю предпочтительной практики.

Любая информация будет полезна, спасибо

Ответы [ 2 ]

1 голос
/ 19 сентября 2009

Вы можете определить эти "нормальные функции" как слоты. Слоты - это просто нормальные функции , которые также могут вызываться по сигналам:

class ToolSelector : public QObject {
  Q_OBJECT

public:
  Tool *selected;

public slots:
  void selectBrush();
  void selectPen();
  void selectFill();
};

ToolSelector::selectBrush() {
  delete selected;
  selected = new Brush();
}

ToolSelector::selectPen() {
  // ...
}

// ...

toolsel = new ToolSelector();
brushButton = new QPushButton();
connect(brushButton, SIGNAL(clicked()), toolsel, SLOT(selectBrush()));
0 голосов
/ 19 сентября 2009

Наследуйте от класса, который генерирует uic, создавая, скажем, класс MyAppWindow. Предоставьте дополнительные МЕТОДЫ в этом классе, а также объект Document или Drawing. Соедините эти методы с интересующими вас сигналами, и они изменят переменную-член, содержащую состояние рисования.

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