Подождите, пока кнопка не нажата (QT)

это мой первый пост на SO ^ _ ^

Я пытаюсь реализовать игра письмо схватка с каркасом QT. Основная часть закончена, но теперь я ошеломлен — я не могу понять, как заставить программу ждать нажатия кнопки внутри игры.

Пожалуйста, помогите мне с этим. заранее спасибо

Вот псевдокод моего игрового цикла:

//initialize grid, score, time

// accept words until timer expires
while (true)    {

// draw the current state of the grid

// log board

// get current time

// report score

// check for game's end

// report time remaining

// prompt for word and converting it to char*
//HOW TO WAIT UNTILL BUTTON PRESSED????!!!!

// check whether to scramble grid

// or to look for word on grid and in dictionary
}

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

1

Решение

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

В случае событий Qt предоставляет механизм слотов / сигналов для получения этих событий и реагирования на них. Так, например, в случае QPushButton есть сигнал с именем «нажатый». Когда пользователь нажимает на кнопку, его нажатый сигнал испускается. Вы, как разработчик, можете подключить нажатый сигнал к слоту, который является функцией, которую вы определяете.

Например, в классе MyClass, производном от QObject: —

QPushButton button("Select"); // create a QPushButton object
connect(button, SIGNAL(pressed()), this, SLOT(buttonPressed()));

Оператор connect соединяет сигнал «нажатых» кнопки с функцией слота, называемой «buttonPressed». Затем вы должны определить эту функцию:

void MyClass::buttonPressed()
{
// handle the button pressed event....
}

Таким образом, на самом деле у вас нет вызовов для ожидания нажатия кнопки в качестве фреймворка, и ее архитектура спроектирована таким образом, и вам не нужно помещать все в цикл while (true).

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]