Название: калькулятор Отправлено: Alexu007 от Май 06, 2013, 12:14 Обычный калькулятор, иммитирующий внешний вид и работу:
(http://s017.radikal.ru/i431/1305/d7/2b1b91efda16.jpg) Название: Re: калькулятор Отправлено: m_ax от Май 06, 2013, 12:16 А для чего две левые нижние кнопки? Механизм самоуничтожения :)
Название: Re: калькулятор Отправлено: Bepec от Май 06, 2013, 13:24 *правые*?
Название: Re: калькулятор Отправлено: kambala от Май 06, 2013, 15:06 туда можно степень притулить
Название: Re: калькулятор Отправлено: Bepec от Май 06, 2013, 16:25 Код конечно не блещет, зато простой :P
Название: Re: калькулятор Отправлено: RedDog от Май 06, 2013, 16:35 иммитирующий внешний вид и работу: Вот это не совсем понятно... Т.е. Он только иммитирует, но нифига не считает? А зачем тогда он нужен?Название: Re: калькулятор Отправлено: m_ax от Май 06, 2013, 16:38 Название: Re: калькулятор Отправлено: panAlexey от Май 06, 2013, 19:12 Вот калькулятор из книги Земскова (кажется) с добавленными улучшениями (и глюками)
из улучшений: режим выделения цифровых рядов апострофами(есть глюк со вводом нуля после точки), можно набирать на клавиатуре цифры|+|*|/|Энтер|= бакспейс и т.п. а не тыкать мышкой теряя время, топ-лэвел моде (мне так удобнее). Название: Re: калькулятор Отправлено: Alexu007 от Май 06, 2013, 20:16 Всё он считает. Есть много программ, которые пишут на экране что-то вроде 2 + 3 = 5 в строчку или в столбик. Я же хотел запрограммировать логику работы кнопок настоящего калькулятора. Сами то вычисления - что их программить?
Две пустые кнопки не знаю, каким нагрузить функционалом. Для памяти маловато, нужно четыре: М+ М- MR MC. А менять внешний вид и добавлять кнопки как-то неохота. Обработку клавиатуры можно конечно добавить. А как в Qt получить коды нажатых клавиш, если активна не Edit, а кнопка или сама форма? Название: Re: калькулятор Отправлено: gil9red от Май 07, 2013, 03:50 Цитировать Обработку клавиатуры можно конечно добавить. А как в Qt получить коды нажатых клавиш, если активна не Edit, а кнопка или сама форма? eventfilter? :)Название: Re: калькулятор Отправлено: panAlexey от Май 07, 2013, 08:11 Обработку клавиатуры можно конечно добавить. А как в Qt получить коды нажатых клавиш, если активна не Edit, а кнопка или сама форма? Посмотри Земскофский, там есть.Название: Re: калькулятор Отправлено: Alexu007 от Май 07, 2013, 23:40 А ссылочку на книгу Земскова не кинете? Я скачал "Программирование на C++ с использованием библиотеки Qt 4", но чё то там никаких калькуляторов нету...
Название: Re: калькулятор Отправлено: Bepec от Май 08, 2013, 07:07 Код: // инклуды Название: Re: калькулятор Отправлено: Alexu007 от Май 08, 2013, 13:40 Спасибо, чуть попозже попробую прикрутить, о результатах напишу.
Название: Re: калькулятор Отправлено: Alexu007 от Май 08, 2013, 17:17 Чё то не получается. Я в заголовочный файл всё вписал, и в файл widget.cpp вставил следующую функцию:
Код
Как я понимаю, эта функция должна вызываться при каких-то событиях, и при нажатия клавиш в т.ч. Но она не вызывается. И ещё - я не понял, куда вставлять вот это: // установка фильтра в любой виджет виджетУКоторогоНадоПерехватывать->installEventFilter(виджетУКоторогоИмеетсяФункцияEventFilter) нужно, чтобы нажатия клавиш перехватывались везде: и когда фокус на форме, и на кнопках, и на lineEdit, а больше там ничего нет. Название: Re: калькулятор Отправлено: Bepec от Май 08, 2013, 18:13 Тогда узнай же о великом и гениальном grabKeyboard().
Будучи вызванным у виджета, он будет перехватывать все без исключения нажатия клавиш. Т.е. алгоритм - вызвать grabKeyboard() и установить фильтр тому же виджету. Название: Re: калькулятор Отправлено: GreatSnake от Май 08, 2013, 19:18 нужно, чтобы нажатия клавиш перехватывались везде: и когда фокус на форме, и на кнопках, и на lineEdit, а больше там ничего нет. Прогон всех событий приложения через this:Код
Название: Re: калькулятор Отправлено: Alexu007 от Май 08, 2013, 19:41 Прогон всех событий приложения через this: Я новичок в Qt и многого там не понимаю. Калькулятор был написан мной сперва в билдере, но я и там особо в детали не вдавался: получил обработчик прерывания кнопки и пиши туда код. А потом сделал примерно то же самое в Qt.Код
Прогон всех событий - это прекрасно. Судя по названию, это установка фильтра событий но куда его конкретно вставлять то? Название: Re: калькулятор Отправлено: kambala от Май 08, 2013, 19:51 в конструктор
Название: Re: калькулятор Отправлено: Alexu007 от Май 09, 2013, 01:03 Ругается на строчку:
Код
ошибка: no matching function for call to 'qobject_cast(QEvent*&)' Название: Re: калькулятор Отправлено: Bepec от Май 09, 2013, 08:59 Эт уже моя ошибка.
Там static_cast я использую ;) Извиняюсь. PS наверно dynamic_cast тут будет вернее. Меня поправят, я думаю. Название: Re: калькулятор Отправлено: Alexu007 от Май 09, 2013, 14:26 Эт уже моя ошибка. Ну, кто виноват - ясно. А чё делать то?Там static_cast я использую ;) Извиняюсь. PS наверно dynamic_cast тут будет вернее. Меня поправят, я думаю. Название: Re: калькулятор Отправлено: Bepec от Май 09, 2013, 14:41 Маразм... Заменить qobject_cast на static_cast.
Название: Re: калькулятор Отправлено: Alexu007 от Май 09, 2013, 16:30 Маразм... Заменить qobject_cast на static_cast. Извините чайника. QKeyEvent *keyEvent = qobject_cast <QKeyEvent *>(event); Я понимаю, что мы создаём ссылку на класс (да?) и заполняем этот класс значениями с помощью функции qobject_cast <QKeyEvent *>(event); Но что это за функция - за гранью моего понимания. Почему qobject_cast, почему <QKeyEvent *> в угловых скобках, зачем в конце (event)? Я не понимаю, и не понимаю, откуда эту информацию можно взять. Я порыл в справке класс QKeyEvent, но там нет ничего о том, как заполнять его данными. Только, как извлекать информацию, например keyEvent->text(), или keyEvent->key(). Название: Re: калькулятор Отправлено: Alexu007 от Май 09, 2013, 16:35 static_cast работает. dynamic_cast тоже работает. Статическое связывание и динамическое связывание - что это такое и в чём разница?
Название: Re: калькулятор Отправлено: kambala от Май 09, 2013, 20:20 тут достаточно статик каста.
отличия кастов, а также что это такое в принципе, гуглятся с неимоверной лёгкостью, раз уж не столкнулся с этой темой во время изучения плюсов. Название: Re: калькулятор Отправлено: Alexu007 от Май 10, 2013, 10:13 Я не изучал плюсы. Посоветуйте хороший учебник по Qt.
Прога заработала, вот функция обработки клавиатуры: Код
И исходники с обработкой клавиш: Название: Re: калькулятор Отправлено: kambala от Май 10, 2013, 13:43 Я не изучал плюсы. Посоветуйте хороший учебник по Qt. пацан к успеху шелНазвание: Re: калькулятор Отправлено: thechicho от Май 10, 2013, 15:22 http://www.lektorium.tv/course/?id=22825 (http://www.lektorium.tv/course/?id=22825) Основы C++, 1 семестр
http://www.lektorium.tv/course/?id=22858 (http://www.lektorium.tv/course/?id=22858) Основы C++, 2 семестр Лектор: Евгений Линский Название: Re: калькулятор Отправлено: Alexu007 от Май 12, 2013, 07:12 Прикрутил дополнительную фичу, так прикольней и даже удобнее. Работает и с мышкой и с клавиатурой. На этом работу над калькулятором прекращаю, дарю свой гениальный код благодарным потомкам:
(http://i081.radikal.ru/1305/b0/7cccbc9d5923.jpg) Название: Re: калькулятор Отправлено: Bepec от Май 12, 2013, 09:48 Я б советовал его оптимизировать :) Но дай бог.
Название: Re: калькулятор Отправлено: thechicho от Май 12, 2013, 10:04 //дарю свой гениальный код благодарным потомкам
скромненько :D Название: Re: калькулятор Отправлено: Alexu007 от Май 12, 2013, 11:24 Я б советовал его оптимизировать :) Но дай бог. А что там можно оптимизировать?скромненько :D Да прочитал на каком-то форуме буквально: "допустим, вы захотели выложить свой гениальный код (а другого мы не пишем!!!)..." - понравилось... ;D |