Russian Qt Forum
Ноябрь 24, 2024, 14:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: if btn clicked a++  (Прочитано 2050 раз)
ann-joker
Гость
« : Апрель 20, 2012, 18:33 »

Пытаюсь сделать крестики нолики и самое важное не выходит.
Вот:
Код:
    for (int i = 0; i < 3; i++){
        for (int j = 0; j < 3; j++){
            btn[i][j] = new QPushButton("");
            grid->addWidget(btn[i][j],i,j);
            a[i][j] = 0; // if a = 1 - на клетке крестик, if a = 2 - нолик.
            QObject::connect(btn[i][j],SIGNAL(clicked()), this, SLOT(tictac()));
        }

}

void Tic::tictac(){
    QPushButton *btn = qobject_cast<QPushButton*>(sender());
    if (btn->text()==""){
        if (pos%2 == 0){
            btn->setText("X");
        }
        else if (pos%2 == 1){
            btn->setText("O");
        }
    }
    pos++;
}

пока просто без логики.

как сделать, чтобы если эта кнопка нажата то соответствующее значение а менялось?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Апрель 20, 2012, 19:38 »

Код:
как один из вариантов - записывать координаты в свойства кнопки и потом в tictac() считывать их и ставить соответствующие значения в качестве индексов a
[code=cpp]btn[i][j]->setProperty("row", i);
btn[i][j]->setProperty("col", j);

пара замечаний:
  • родителя кнопкам лучше все-таки указать
  • если текста нет на кнопке, то через "" его задавать и не нужно - там по умолчанию пусто. в крайнем же случае - использовать QString() вместо ""
  • проверка на пустоту строки осуществляется через QString::isEmpty()
  • для понятливости лучше задать enum для возможных значений массива a, например
Код
C++ (Qt)
enum
{
   NOTHING = 0,
   CROSS,
   NIL
};
[/code]
« Последнее редактирование: Апрель 20, 2012, 20:18 от kambala » Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.068 секунд. Запросов: 22.