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

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

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: калькулятор  (Прочитано 22843 раз)
Alexu007
Гость
« : Май 06, 2013, 12:14 »

Обычный калькулятор, иммитирующий внешний вид и работу:

Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #1 : Май 06, 2013, 12:16 »

А для чего две левые нижние кнопки? Механизм самоуничтожения Улыбающийся
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Bepec
Гость
« Ответ #2 : Май 06, 2013, 13:24 »

*правые*?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Май 06, 2013, 15:06 »

туда можно степень притулить
Записан

Изучением 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
Bepec
Гость
« Ответ #4 : Май 06, 2013, 16:25 »

Код конечно не блещет, зато простой Показает язык
Записан
RedDog
Гость
« Ответ #5 : Май 06, 2013, 16:35 »

иммитирующий внешний вид и работу:
Вот это не совсем понятно... Т.е. Он только иммитирует, но нифига не считает? А зачем тогда он нужен?
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #6 : Май 06, 2013, 16:38 »

*правые*?
Да, т.е. правые)
*но в какой то степени и левые)*
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #7 : Май 06, 2013, 19:12 »

Вот калькулятор из книги Земскова (кажется) с добавленными улучшениями (и глюками)
из улучшений: режим выделения цифровых рядов апострофами(есть глюк со вводом нуля после точки), можно набирать на клавиатуре цифры|+|*|/|Энтер|= бакспейс и т.п. а не тыкать мышкой теряя время, топ-лэвел моде (мне так удобнее).
« Последнее редактирование: Май 07, 2013, 11:15 от panAlexey » Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Alexu007
Гость
« Ответ #8 : Май 06, 2013, 20:16 »

Всё он считает. Есть много программ, которые пишут на экране что-то вроде 2 + 3 = 5 в строчку или в столбик. Я же хотел запрограммировать логику работы кнопок настоящего калькулятора. Сами то вычисления - что их программить?

Две пустые кнопки не знаю, каким нагрузить функционалом. Для памяти маловато, нужно четыре: М+ М- MR MC. А менять внешний вид и добавлять кнопки как-то неохота.

Обработку клавиатуры можно конечно добавить. А как в Qt получить коды нажатых клавиш, если активна не Edit, а кнопка или сама форма?
« Последнее редактирование: Май 06, 2013, 20:28 от Alexu007 » Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #9 : Май 07, 2013, 03:50 »

Цитировать
Обработку клавиатуры можно конечно добавить. А как в Qt получить коды нажатых клавиш, если активна не Edit, а кнопка или сама форма?
eventfilter? Улыбающийся
Записан

panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #10 : Май 07, 2013, 08:11 »

Обработку клавиатуры можно конечно добавить. А как в Qt получить коды нажатых клавиш, если активна не Edit, а кнопка или сама форма?
Посмотри Земскофский, там есть.
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Alexu007
Гость
« Ответ #11 : Май 07, 2013, 23:40 »

А ссылочку на книгу Земскова не кинете? Я скачал "Программирование на C++ с использованием библиотеки Qt 4", но чё то там никаких калькуляторов нету...
Записан
Bepec
Гость
« Ответ #12 : Май 08, 2013, 07:07 »

Код:
// инклуды
#include <QEvent>
#include <QKeyEvent>
// объявление в H файле
bool eventFilter(QObject *obj, QEvent *event);
// реализация в CPP
bool ИмяВашегоКласса::eventFilter(QObject *obj, QEvent *event)
{
//qDebug() << event;
// реагируем на нажатия клавиш
if (event->type() == QEvent::KeyPress /*&& obj->objectName() == "Имя виджета"*/)
{
QKeyEvent *keyEvent = qobject_cast<QKeyEvent *>(event);
switch (keyEvent->key())
{
case Qt::Key_Insert:

break;
case Qt::Key_Delete:

break;
case Qt::Key_Return:

break;
case Qt::Key_Escape:

break;
default:
qDebug() << "IMPOSSIBLE ERROR" <<  __FILE__  << __FUNCTION__  << __LINE__;
break;
}

}
return QObject::eventFilter(obj, event);

}
// установка фильтра в любой виджет
виджетУКоторогоНадоПерехватывать->installEventFilter(виджетУКоторогоИмеетсяФункцияEventFilter)
Записан
Alexu007
Гость
« Ответ #13 : Май 08, 2013, 13:40 »

Спасибо, чуть попозже попробую прикрутить, о результатах напишу.
Записан
Alexu007
Гость
« Ответ #14 : Май 08, 2013, 17:17 »

Чё то не получается. Я в заголовочный файл всё вписал, и в файл widget.cpp вставил следующую функцию:

Код
C++ (Qt)
bool Widget::eventFilter(QObject *obj, QEvent *event)
   {
 
   ui->lineEdit->setText("Yess");
 
   return  QObject::eventFilter(obj, event);
   }
 

Как я понимаю, эта функция должна вызываться при каких-то событиях, и при нажатия клавиш в т.ч. Но она не вызывается. И ещё - я не понял, куда вставлять вот это:

// установка фильтра в любой виджет
виджетУКоторогоНадоПерехватывать->installEventFilter(виджетУКоторогоИмеетсяФункцияEventFilter)

нужно, чтобы нажатия клавиш перехватывались везде: и когда фокус на форме, и на кнопках, и на lineEdit, а больше там ничего нет.

Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


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