Название: Обработчик кнопок для калькулятора Отправлено: voodoo от Декабрь 12, 2011, 01:44 Доброе время суток!
Решил для освоения Qt написать калькулятор. Как при нажатии кнопки мыши по клавише, определить какая именно клавиша была нажата? Код: void Dialog::mousePressEvent(QMouseEvent *e) Хочу просто сделать обработчик для клавиш 0-9, чтобы код был покомпактнее. Заранее спасибо. Название: Re: Обработчик кнопок для калькулятора Отправлено: LisandreL от Декабрь 12, 2011, 01:49 Это же событие, а не слот. Вместо сендера используйте this, каста не надо.
Самый банальный вариант - взять цифру из текста на кнопке. Название: Re: Обработчик кнопок для калькулятора Отправлено: voodoo от Декабрь 12, 2011, 02:00 Цитировать Это же событие, а не слот. Вместо сендера используйте this, каста не надо. Я немного не понял как это должно выглядеть в коде. Не могли бы Вы показать?Название: Re: Обработчик кнопок для калькулятора Отправлено: BuRn от Декабрь 12, 2011, 02:05 можно так
где-то в коде на батон Код: QPushButton *button = new QPushButton; Код: QObject *element = (QObject *)sender(); Название: Re: Обработчик кнопок для калькулятора Отправлено: BuRn от Декабрь 12, 2011, 02:14 Код: void Dialog::mousePressEvent(QMouseEvent *e) Название: Re: Обработчик кнопок для калькулятора Отправлено: voodoo от Декабрь 12, 2011, 02:20 BuRn, как тогда сделать обработчик на клавиши?
Название: Re: Обработчик кнопок для калькулятора Отправлено: BuRn от Декабрь 12, 2011, 02:24 Код: connect(button,SIGNAL(clicked()),this,SLOT(RemoveItem())); можно через гуи тоже самое сделать, на кнопку повесить обработчик ... в классе объявляешь слот, который будет отвечать за нажатие кнопки public slots: void MySlot(); далее в конструкторе можно явно прописать у тебя будет что-то типа connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(MySlot())); Название: Re: Обработчик кнопок для калькулятора Отправлено: voodoo от Декабрь 12, 2011, 02:27 Да ну это понятно :))) Так сделать - самый простой вариант, но будет куча лишнего кода.
Название: Re: Обработчик кнопок для калькулятора Отправлено: BuRn от Декабрь 12, 2011, 02:38 ну засунь в него тогда mousePressEvent(QMouseEvent *e), то , что я тебе писал кинуть в обработчик
Название: Re: Обработчик кнопок для калькулятора Отправлено: andrew.k от Декабрь 12, 2011, 03:12 Да ну это понятно :))) Так сделать - самый простой вариант, но будет куча лишнего кода. Одна строка это куча? Это в твоем варианте будет куча лишнего кода.Название: Re: Обработчик кнопок для калькулятора Отправлено: voodoo от Декабрь 12, 2011, 03:18 Одна строка на 10 кнопок:) итого:)
Название: Re: Обработчик кнопок для калькулятора Отправлено: andrew.k от Декабрь 12, 2011, 03:19 Ты коннекты сигналов за код считаешь?
Название: Re: Обработчик кнопок для калькулятора Отправлено: LisandreL от Декабрь 12, 2011, 08:17 Я немного не понял как это должно выглядеть в коде. Не могли бы Вы показать? Код Отмечу, что события обрабатываем у кнопки, а не у диалога, как у вас. Но вообще через сигналы кошерней. Для клавиш 0-9 можно использовать QSignalMapper. Название: Re: Обработчик кнопок для калькулятора Отправлено: voodoo от Декабрь 12, 2011, 17:24 Попытался сделать через QSignalMapper. Но не знаю к какому событию диалога привязывать "биндовку" клавиш. Попытался так:
Код: void Dialog::finished() Но не работает =/ ошибок куча Название: Re: Обработчик кнопок для калькулятора Отправлено: kambala от Декабрь 12, 2011, 18:25 а память кто выделять будет?
да и смысл замапить числа, а не строки Название: Re: Обработчик кнопок для калькулятора Отправлено: LisandreL от Декабрь 12, 2011, 20:11 QString button_name = "num_" + QString::number(i); Это откуда у нас появился коннект по имени объекта?connect(button_name,SIGNAL(clicked()),signalMapper,SLOT(map())); Название: Re: Обработчик кнопок для калькулятора Отправлено: voodoo от Декабрь 14, 2011, 00:27 Я просто делал по такому примеру: http://qt.ucoz.net/publ/qsignalmapper_kak_polzovatsja/1-1-0-18
Название: Re: Обработчик кнопок для калькулятора Отправлено: LisandreL от Декабрь 14, 2011, 00:34 Я просто делал по такому примеру: http://qt.ucoz.net/publ/qsignalmapper_kak_polzovatsja/1-1-0-18 В примере в коннекте первый аргумент button типа QPushButton*.У вас первый аргумент - button_name типа QString. Есть некоторая разница, не находите? Название: Re: Обработчик кнопок для калькулятора Отправлено: voodoo от Декабрь 14, 2011, 11:25 У меня проект сделан через QtCreator, конструктором набросаны кнопки и т.п., я просто не знаю как сделать для такого варианта. Всё что нахожу в инете - так это код где ты сам, кодом, без конструктора, добавляешь объекты.
Название: Re: Обработчик кнопок для калькулятора Отправлено: kambala от Декабрь 14, 2011, 14:39 connect(ui.myButton, ...);
|