Форум программистов, компьютерный форум, киберфорум
Наши страницы

Qt

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Anriuser
-1 / 1 / 1
Регистрация: 18.10.2013
Сообщений: 312
#1

Калькулятор из двух полей для ввода текста, кнопки для выполнения арифметического действия и текстовой строки - C++ Qt

09.07.2014, 23:23. Просмотров 1395. Ответов 12
Метки нет (Все метки)

Постановка задачи: \ Создайте калькулятор из двух полей для ввода текста, кнопки для
выполнения арифметического действия и текстовой строки для вывода результата. арифметическое действие
любое. Виджеты создайте программно (без использования Qt Designer).
wiget.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# include "widget.h" 
# include <QHBoxLayout> 
# include <QVBoxLayout> 
# include <QLabel> 
# include <QLineEdit> 
# include <QPushButton> 
Widget :: Widget (QWidget * parent) 
**** : QWidget (parent) 
{
 
**** / / Первый горизонтальная строка 
**** / / Исходный текст в поле ввода 
**** QLineEdit * lLineEdit = new QLineEdit ("Text 1"); 
**** / / Задаем текст 
**** / / & - Означает комбинацию клавиш 
**** / / Для активации виджета 
**** QLabel * lLabel = new QLabel ("Line Edit & 1"); 
**** / / Задаем виджет к которому будет пермикатися 
**** / / Фокус ввода при нажатии Alt +1 
**** lLabel-> setBuddy (lLineEdit); 
**** / / Располагаем поле ввода и 
**** / / Метку в одной строке. 
**** QHBoxLayout * lHBoxLayout = new QHBoxLayout; 
**** lHBoxLayout-> addWidget (lLabel); 
**** lHBoxLayout-> addWidget (lLineEdit); 
**** / / Второй горизонтальная строка 
**** QLineEdit * lLineEdit2 = new QLineEdit ("Text 2"); 
**** QLabel * lLabel2 = new QLabel ("Line Edit & 2"); 
**** lLabel2-> setBuddy (lLineEdit2); 
**** QHBoxLayout * lHBoxLayout2 = new QHBoxLayout; 
**** lHBoxLayout2-> addWidget (lLabel2); 
**** lHBoxLayout2-> addWidget (lLineEdit2); 
**** / / Третий ряд виджетов с кнопками 
**** QPushButton * lPushButtonOk = new 
**** QPushButton ("& Ok"); 
**** QPushButton * lPushButtonCancel = new 
**** QPushButton ("& Cancel"); 
**** QHBoxLayout * lHBoxLayout3 = new QHBoxLayout; 
**** / / Добавляем элемент-растяжение 
**** / / Он займет все возможное свободное пространство 
**** / / И "прижмет" кнопки к краю 
**** lHBoxLayout3-> addStretch (); 
**** lHBoxLayout3-> addWidget (lPushButtonOk); 
**** lHBoxLayout3-> addWidget (lPushButtonCancel); 
 
**** / / Добавляем компоновки вертикально в колонке 
**** QVBoxLayout * lVBoxLayout = new QVBoxLayout; 
**** lVBoxLayout-> addLayout (lHBoxLayout); 
**** lVBoxLayout-> addLayout (lHBoxLayout2); 
**** lVBoxLayout-> addLayout (lHBoxLayout3); 
**** / / Задаем компоновки для окна 
**** setLayout (lVBoxLayout); 
 
} 
 
Widget :: ~ Widget () 
{
 
}
main.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
#include "widget.h"
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
 
    return a.exec();
}
Добавлено через 1 минуту
Виджеты есть а как сделать чтоб додавало не знаю, помогитепожалуйста!

Нужна любая програма которая б ето делала.

Добавлено через 53 минуты
Хелп народ!!!!!!!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2014, 23:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Калькулятор из двух полей для ввода текста, кнопки для выполнения арифметического действия и текстовой строки (C++ Qt):

Вывести окно для ввода текстовой строки - VBA
Вывести примерно в правом верхнем углу экрана окно для ввода текстовой строки, показать эту строку в окне сообщений с кнопками да/нет и...

Сохранение текста из полей для ввода - Delphi
имеются два поля для ввода edit1 и edit2, так нужно что бы после нажатия кнопки содержимое этих полей сохранялось в текстовый документ

Создать поле для ввода текста, радио кнопки - JavaScript
&lt;!--Создать поле для ввода текста, радио кнопки, в которых указан тип шрифта и кнопку при нажатии, на которую введенный текст отображается...

Создать фрейм с двумя полями для ввода текста и одной кнопкой сохранения значения полей в переменные - Java
Нужно создать фрейм с двумя полями для ввода текста и одной кнопкой при нажатии которой он сохраняет текст первого поля в перемнную А, а...

Как связать несколько полей для ввода одно для вывода - Delphi
можете сказать как связать несколько полей для ввода одно для вывода потом прогресс бар форму (Groupbox1) , (RadioGroup)?

Использование ComboBox для выбора арифметического действия - Java
Помогите разобраться, что не так я сделал. Хочу выбирать тип арифметической операции при помощи ComboBox. Но что-то не получается. ...

12
RazrFalcon
1381 / 1238 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
09.07.2014, 23:24 #2
http://qt-project.org/doc/qt-4.8/widgets-calculator.html
0
Anriuser
-1 / 1 / 1
Регистрация: 18.10.2013
Сообщений: 312
09.07.2014, 23:46  [ТС] #3
Мне в едиты надо вводить два числа жать на кнопку и результат заносится в Текст!

Добавлено через 14 секунд
Ето я видел уже

Добавлено через 14 минут
Просто любая операция например сумма подойдет норм

Добавлено через 28 секунд
А виджеты я сделал програмно токо дальше я хз)
0
RazrFalcon
1381 / 1238 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
09.07.2014, 23:47 #4
Вам сюда: http://www.cyberforum.ru/order-program/
0
Anriuser
-1 / 1 / 1
Регистрация: 18.10.2013
Сообщений: 312
10.07.2014, 02:12  [ТС] #5
RazrFalcon, Спасибо за совет, но такие ответы меня не интересуют к сожелению)

Добавлено через 22 минуты
Хелп народ!!

Добавлено через 15 минут
Помогите пипл(

Добавлено через 13 минут
хееелп

Добавлено через 19 минут
хееелп

Добавлено через 36 минут
Да хоть ктото помогите

Добавлено через 5 минут
Напишите фрагмент хоть чтоб я знал чо делать...

Добавлено через 27 минут
Да хелп народ етож елементарно для опытных програмистов, я ток вчера кют начал учить
0
magirus
10.07.2014, 07:20
  #6

Не по теме:

Anriuser,

Сегодня, 02:12 [ТС]
Цитата Сообщение от Anriuser Посмотреть сообщение
Добавлено через 22 минуты
Цитата Сообщение от Anriuser Посмотреть сообщение
Добавлено через 15 минут
Цитата Сообщение от Anriuser Посмотреть сообщение
Добавлено через 13 минут
Цитата Сообщение от Anriuser Посмотреть сообщение
Добавлено через 19 минут
Цитата Сообщение от Anriuser Посмотреть сообщение
Добавлено через 36 минут
посреди ночи орать на форуме "хелп" как минимум глупо. здесь вам не круглосуточная техподдержка

0
Aline_u
12 / 12 / 2
Регистрация: 15.04.2013
Сообщений: 204
11.07.2014, 10:45 #7
Цитата Сообщение от Anriuser Посмотреть сообщение
чтоб додавало
что делало?
0
RazrFalcon
1381 / 1238 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
11.07.2014, 13:22 #8
Цитата Сообщение от Aline_u Посмотреть сообщение
что делало?
Суммировало (он на украинском написал)
0
Aline_u
12 / 12 / 2
Регистрация: 15.04.2013
Сообщений: 204
11.07.2014, 15:29 #9
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
RazrFalcon, ясно
в украинском несильна, поняла только, что что-то должно происходить

Добавлено через 40 минут
Anriuser, а что сложного по нажатию на кнопку арифметического действия, например, сложить 2 числа и вывести результат в третье поле?

Добавлено через 1 час 21 минуту
Просто от неечего делать:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include "widget.h"
#include <QtWidgets>
#include <QtGui>
 
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    lLineEdit = new QLineEdit;
    QLabel *lLabel = new QLabel("Number 1");
 
 
    QHBoxLayout *lHBoxLayout = new QHBoxLayout;
     lHBoxLayout->addWidget(lLabel);
     lHBoxLayout->addWidget(lLineEdit);
 
     lLineEdit2 = new QLineEdit();
     QLabel *lLabel2 = new QLabel("Number 2");
     lLabel2->setBuddy(lLineEdit2);
     QHBoxLayout *lHBoxLayout2 = new QHBoxLayout;
     lHBoxLayout2->addWidget(lLabel2);
     lHBoxLayout2->addWidget(lLineEdit2);
 
     QPushButton *lPushButtonOk = new  QPushButton("SUM");
     lLineEdit3 = new QLineEdit();
 
     QPushButton *lPushButtonCancel = new QPushButton ("Exit");
     QHBoxLayout *lHBoxLayout3 = new QHBoxLayout;
 
     lHBoxLayout3->addWidget(lPushButtonOk);
     lHBoxLayout3->addWidget(lLineEdit3);
     lHBoxLayout3->addWidget(lPushButtonCancel);
 
    // Добавляем компоновки вертикально в колонке
     QVBoxLayout *lVBoxLayout = new QVBoxLayout;
     lVBoxLayout->addLayout(lHBoxLayout);
     lVBoxLayout->addLayout(lHBoxLayout2);
     lVBoxLayout->addLayout(lHBoxLayout3);
     // Задаем компоновки для окна
    setLayout(lVBoxLayout);
 
    connect(lPushButtonOk,SIGNAL(clicked()), this, SLOT(doSum()));
}
 
Widget::~Widget()
{
 
}
 
 
void Widget::doSum()
{
  lLineEdit3->setText(QString::number(lLineEdit->text().toInt()+lLineEdit2->text().toInt()));//суммируем поля
}
хэдер
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#ifndef WIDGET_H
#define WIDGET_H
 
#include <QWidget>
#include <QtGui>
#include <QLineEdit>
 
 
class Widget : public QWidget
{
    Q_OBJECT
    
public slots:
    void doSum();
public:
    Widget(QWidget *parent = 0);
    ~Widget();
 
    QLineEdit *lLineEdit;
    QLineEdit *lLineEdit2;
    QLineEdit *lLineEdit3;
 
};
 
#endif // WIDGET_H
1
RazrFalcon
1381 / 1238 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
11.07.2014, 16:41 #10
Aline_u, ваш плохой стиль кода просто не позволил мне не привести более правильный и лаконичный пример:

widget.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <QGridLayout>
#include <QPushButton>
#include <QLabel>
 
#include "widget.h"
 
Widget::Widget(QWidget *parent) :
    QWidget(parent)
{
    lineEdit1 = new QLineEdit;
    lineEdit2 = new QLineEdit;
    lineEdit3 = new QLineEdit;
 
    lineEdit3->setReadOnly(true);
 
    QPushButton *btnSum = new QPushButton("Sum");
    btnSum->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
    connect(btnSum, SIGNAL(clicked()), this, SLOT(onBtnSumClicked()));
 
    // можно и с помощью двух лайоутов, но это уже дело вкуса
    QGridLayout *lay = new QGridLayout(this);
    lay->addWidget(lineEdit1, 0, 0);
    lay->addWidget(new QLabel("+"), 0, 1);
    lay->addWidget(lineEdit2, 0, 2);
    lay->addWidget(new QLabel("="), 0, 3);
    lay->addWidget(lineEdit3, 0, 4);
 
    lay->addWidget(btnSum, 1, 0, 1, 5, Qt::AlignCenter);
 
    setWindowTitle("Sum");
    adjustSize();
}
 
void Widget::onBtnSumClicked()
{
    int sum = lineEdit1->text().toInt() + lineEdit2->text().toInt();
    lineEdit3->setText(QString::number(sum));
}
widget.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#ifndef WIDGET_H
#define WIDGET_H
 
#include <QWidget>
#include <QLineEdit>
 
class Widget : public QWidget
{
    Q_OBJECT
 
public:
    explicit Widget(QWidget *parent = 0);
 
private slots:
    void onBtnSumClicked();
 
private:
    QLineEdit *lineEdit1;
    QLineEdit *lineEdit2;
    QLineEdit *lineEdit3;
};
 
#endif // WIDGET_H
main.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <QApplication>
 
#include "mainwindow.h"
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
 
    Widget w;
    w.show();
 
    return a.exec();
}
0
Aline_u
12 / 12 / 2
Регистрация: 15.04.2013
Сообщений: 204
11.07.2014, 16:49 #11
RazrFalcon, стиль не мой я только добавила слот для подсчета суммы, как то не было желания переделывать всё
Но суть то не меняется от этого? Товарищу надо было только добавить обработку нажатия кнопки и добавить поле для вывода результата, остальное дело вкуса (в смысле оформления)
0
RazrFalcon
1381 / 1238 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
11.07.2014, 16:56 #12
Aline_u, лол, я и забыл что у ТС был набросок кода, тогда ладно, забираю свои слова назад. Но частично. В ответах лучше постить хороший код.
0
Anriuser
-1 / 1 / 1
Регистрация: 18.10.2013
Сообщений: 312
13.07.2014, 17:36  [ТС] #13
Всем спасибо, но вы мне помогли после того когда я сам доделал и сдал програму)
0
13.07.2014, 17:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2014, 17:36
Привет! Вот еще темы с ответами:

Применить операторы ветвления для обработки ввода данных в текстовые поля, для выполнения проверки условия - Delphi
Цель: применить операторы ветвления для обработки ввода данных в текстовые поля, для выполнения проверки условия задачи. Постановка...

Сохранить число в поле ввода после нажатия арифметического действия - Программирование Android
Постигаю андроид, ваяю свой 1 калькулятор. Уперся в проблему, но понимаю, как сделать что бы когда пользователь ввел 1 число, оно...

Какой компонент подойдет для ввода текстовой информации (большого объема)? - Delphi
Здравствуйте! Подскажите, какой взять компонент для ввода текстовой информации (большого объема) ?

Калькулятор для матриц. Количество полей - Delphi
Я не особо шарю в программировании, всё пытаюсь учить сам. И как наверное догадываетесь пишу я в основном &quot;быдлокодом&quot;(на ваш суд) . У меня...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru