Вторник, 18 Июня 2024, 08:13

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Проблема с кнопками (Qt)
NednameДата: Среда, 25 Марта 2015, 14:00 | Сообщение # 1
был не раз
Сейчас нет на сайте
Всем привет! Возникла проблема с кнопками Qt.
Файл main.cpp:


файл main_menu.hpp


файл main_menu.cpp


Как передать функции actionsButtons QApplication game?
IUnknownДата: Среда, 25 Марта 2015, 17:42 | Сообщение # 2
был не раз
Сейчас нет на сайте
Цитата Nedname ()
Как передать функции actionsButtons QApplication game?

Делаешь интерфейс к игре (функции, которые будут использовать другие из игры, например, менять состояние) и передаешь его в MainMenu.
Либо глобальная переменная, но это же плохо wink
Snake174Дата: Среда, 25 Марта 2015, 17:47 | Сообщение # 3
участник
Сейчас нет на сайте
Используй глобальную переменную qApp

Добавлено (25 марта 2015, 17:47)
---------------------------------------------
Используй глобальную переменную qApp


Не следует обманывать инспектора
Pipmak Assistant
Love2D Exporter
Love2D-Helpers
Old Consoles Games
NednameДата: Четверг, 26 Марта 2015, 17:30 | Сообщение # 4
был не раз
Сейчас нет на сайте
Цитата Snake174 ()
Делаешь интерфейс к игре

А можно код привести, что-то я не совсем понял.
HPlusDieseДата: Четверг, 26 Марта 2015, 18:14 | Сообщение # 5
участник
Сейчас нет на сайте
Singleton же. И обращайся к инстансу.
Паттерны - не, не слышал.
Snake174Дата: Пятница, 27 Марта 2015, 09:15 | Сообщение # 6
участник
Сейчас нет на сайте
Цитата
Используй глобальную переменную qApp

Код
QObject::connect(MainMenu::closeButton, SIGNAL(clicked()), qApp, SLOT(quit()));

Не помню какой слот отвечает за закрытие, но closeAllWindows() точно есть.

Цитата
Singleton же. И обращайся к инстансу.

qApp и есть глобальная статичная переменная

Код

MainMenu::window = new QWidget();
...

Первый раз вижу чтобы так писали wacko


Не следует обманывать инспектора
Pipmak Assistant
Love2D Exporter
Love2D-Helpers
Old Consoles Games
NednameДата: Пятница, 27 Марта 2015, 09:30 | Сообщение # 7
был не раз
Сейчас нет на сайте
Цитата Snake174 ()
Первый раз вижу чтобы так писали

А как нужно?
Цитата Snake174 ()
Используй глобальную переменную qApp

Т.е. мне нужно объявить QApplication game(argc, argv) вне int main()? Но тогда откуда брать аргументы arc и argv?
Snake174Дата: Пятница, 27 Марта 2015, 10:05 | Сообщение # 8
участник
Сейчас нет на сайте
Цитата
А как нужно?

Хотя бы просто window = new QWidget();

Цитата
Т.е. мне нужно объявить QApplication game(argc, argv) вне int main()?

Ничего не нужно объявлять. Замени
Код
QObject::connect(MainMenu::closeButton, SIGNAL(clicked()), &game, SLOT(quit()));

на
Код
QObject::connect(MainMenu::closeButton, SIGNAL(clicked()), qApp, SLOT(quit()));

и всё.


Не следует обманывать инспектора
Pipmak Assistant
Love2D Exporter
Love2D-Helpers
Old Consoles Games
NednameДата: Пятница, 27 Марта 2015, 21:41 | Сообщение # 9
был не раз
Сейчас нет на сайте
Snake174, спасибо!
IUnknownДата: Суббота, 28 Марта 2015, 19:29 | Сообщение # 10
был не раз
Сейчас нет на сайте
Цитата Nedname ()
А можно код привести, что-то я не совсем понял.

Интерфейс - класс с объявленными чисто виртуальными функциями же :)
Это что-то подобное, но смысл передаёт:
Код
struct IGame
{
   virtual void Update(void) = 0;
};

class CGame : public IGame
{
public:
   void Update(void);
};

void CGame::Update(void)
{
}

int main(int, char**)
{
   IGame *pGame = new CGame();

   pGame->Update();

   delete pGame;

   return 0;
}

В итоге используется только интерфейс, хранишь просто указатель на него.
Но если немного подшаманить, то можно много чего сделать.
NednameДата: Суббота, 28 Марта 2015, 21:27 | Сообщение # 11
был не раз
Сейчас нет на сайте
Цитата IUnknown ()
Интерфейс - класс с объявленными чисто виртуальными функциями же smile

Это я знаю. Просто не понятно было, как реализовать Ваш способ.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг