Название: Картинка "с кликом" Отправлено: Doszhan от Февраль 26, 2011, 12:01 Доброго времени суток,
В универе писали вторую нашу в жизни программу на Qt - крестики-нолики. Ячейки делали как кнопки. Домой задали морской бой. Хочу сделать так: Фон игры - скан нарисованными руками 2 таблицы по 10Х10. Теперь мне надо отлавливать клики по каждой ячейке таблиц. Как это осуществить? Посылать сигнал если клик будет сделан по такому квадрату пикселей? Или сделать невидимые кнопки? Буду признателен совету и какой-нибудь ссылке (англ или рус) Название: Re: Картинка "с кликом" Отправлено: m_ax от Февраль 26, 2011, 13:20 Хочу сделать так: Скан??? Лучше написать нормальный виджет с возможностью редактирования клеток..Фон игры - скан нарисованными руками 2 таблицы по 10Х10. Теперь мне надо отлавливать клики по каждой ячейке таблиц. Как это осуществить? Посылать сигнал если клик будет сделан по такому квадрату пикселей? Или сделать невидимые кнопки? Всё это реализуется через переопределения событий. Хотя я бы ещё посмотрел в сторону модель-представление. Посмотрите на пример у тролей, где они реализовали своё представление Chart Example вроде. Название: Re: Картинка "с кликом" Отправлено: SABROG от Февраль 26, 2011, 13:22 Посмотри исходники Character Map Example (http://doc.qt.nokia.com/latest/widgets-charactermap.html)
Клеточки рисуются через переопределение paintEvent, а координаты клика мыши переводятся в нужный квадрат. Реализовывать через QPushButton'ы по-моему, оверхед. Название: Re: Картинка "с кликом" Отправлено: Doszhan от Февраль 26, 2011, 13:48 Спасибо, буду пробовать реализовывать через pixmap.
Конечно, лучше было бы делать через QPushButton или что-то подобное, но пока учусь можно немного побаловаться. Потом боюсь времени не хватит) UPD: точнее не pixmap, а просто QPoint :) Название: Re: Картинка "с кликом" Отправлено: Doszhan от Февраль 26, 2011, 17:19 Все время выходит ошибка, прошу помощи.
logic.h: Код: #ifndef LOGIC_H mainwindow.h: Код: #ifndef MAINWINDOW_H logic.cpp: Код: #include "logic.h" main.cpp: Код: #include <QtGui/QApplication> mainwindow.cpp: Код: #include "mainwindow.h" Error: undefined reference to 'Logic::Logic(QWidget*)' Я хотел сделать так, чтобы все функции были описаны в файле logic.cpp. Название: Re: Картинка "с кликом" Отправлено: Пантер от Февраль 26, 2011, 17:37 А кто за тебя Logic(QWidget *parent = 0); будет реализовывать?
Название: Re: Картинка "с кликом" Отправлено: Doszhan от Февраль 26, 2011, 17:45 А кто за тебя Logic(QWidget *parent = 0); будет реализовывать? :) Большое спасибо. Я хотел, чтобы при клике выводилось сообщение с координатом по X, а сейчас просто выводится окно. logic.cpp: Код: #include "logic.h" UPD:Разобрался. mainwindow.cpp: Код: #include "mainwindow.h" |