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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Калькулятор  (Прочитано 4038 раз)
illumin
Гость
« : Июнь 07, 2010, 20:34 »

Уважаемые господа, я только что начал осваивать qt, поэтому прошу ответить на мой вопрос (или же ткнуть ссылкой в поиск, гугл, указать на нужные настройки qtcreator, etc).
mainwindow.cpp
Код:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QString>
#include <math.h>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::changeEvent(QEvent *e)
{
    QMainWindow::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}
char textInLine[130];
int sch=0;
void MainWindow::on_deleteButton_clicked()
{
    for(sch=0;sch<100;sch++)
        textInLine[sch] = NULL;
    sch = 0;
    ui->lineEdit->clear();
}
void MainWindow::on_Button_1_clicked()
{
    textInLine[sch] = '1';
    sch++;
    ui->lineEdit->setText(textInLine);
}
void MainWindow::on_Button_2_clicked()
{
    textInLine[sch] = '2';
    sch++;
    ui->lineEdit->setText(textInLine);
}
void MainWindow::on_Button_3_clicked()
{
    textInLine[sch] = '3';
    sch++;
    ui->lineEdit->setText(textInLine);
}
void MainWindow::on_Button_4_clicked()
{
    textInLine[sch] = '4';
    sch++;
    ui->lineEdit->setText(textInLine);
}
void MainWindow::on_Button_5_clicked()
{
    textInLine[sch] = '5';
    sch++;
    ui->lineEdit->setText(textInLine);
}
void MainWindow::on_Button_6_clicked()
{
    textInLine[sch] = '6';
    sch++;
    ui->lineEdit->setText(textInLine);
}
void MainWindow::on_Button_7_clicked()
{
    textInLine[sch] = '7';
    sch++;
    ui->lineEdit->setText(textInLine);
}
void MainWindow::on_Button_8_clicked()
{
    textInLine[sch] = '8';
    sch++;
    ui->lineEdit->setText(textInLine);
}
void MainWindow::on_Button_9_clicked()
{
    textInLine[sch] = '9';
    sch++;
    ui->lineEdit->setText(textInLine);
}
void MainWindow::on_Button_0_clicked()
{
    textInLine[sch] = '0';
    sch++;
    ui->lineEdit->setText(textInLine);
}
void MainWindow::on_Button_00_clicked()
{
    textInLine[sch] = '0';
    sch++;
    textInLine[sch] = '0';
    sch++;
    ui->lineEdit->setText(textInLine);
}
void MainWindow::on_plus_btn_clicked()
{
    textInLine[sch] = '+';
    sch++;
    ui->lineEdit->setText(textInLine);
}
void MainWindow::on_minus_btn_clicked()
{
    textInLine[sch] = '-';
    sch++;
    ui->lineEdit->setText(textInLine);
}
void MainWindow::on_multiply_btn_clicked()
{
    textInLine[sch] = '*';
    sch++;
    ui->lineEdit->setText(textInLine);
}
void MainWindow::on_div_btn_clicked()
{
    textInLine[sch] = '/';
    sch++;
    ui->lineEdit->setText(textInLine);
}
void MainWindow::on_equal_sign_btn_clicked()
{
    textInLine[sch] = '=';
    sch++;
    ui->lineEdit->setText(textInLine);
    long int fir, sec;
    int schv,sch1;
    char chFir[50], chSec[50];
    for(schv=0, sch1=0;;schv++){
        if (textInLine[schv]=='+'||textInLine[schv]=='-'||textInLine[schv]=='*'||textInLine[schv]=='/')
            break;
        else { chFir[sch1]=textInLine[schv]; sch1++; }
    }
    char sign = textInLine[schv];
    chFir[sch1] = '\0';
    fir = atoi(chFir);
    for(sch1=0;;schv++){
        if (textInLine[schv]=='=')
            break;
        else { chSec[sch1]=textInLine[schv]; sch1++; }
    }
    chSec[sch1] = '\0';
    sec = atoi(chSec);
    double resul;
    switch(sign){
    case '+' : resul = fir + sec; /*fir += sec;*/ break;
    case '-' : resul = fir - sec; /*fir -= sec;*/ break;
    case '*' : resul = fir * sec; /*fir *= sec;*/ break;
    case '/' : resul = fir / sec; /*fir /= sec;*/ break;
    default : resul = fir - sec; break;
    }
    QString txt;
    txt.append(textInLine);
    txt.append(QString::number(resul, 'g', 10));
//    txt.append(QString::number(fir,10));
    ui->lineEdit->setText(txt);
}
mainwindow.h
Код:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow {
    Q_OBJECT
public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();

protected:
    void changeEvent(QEvent *e);

private:
    Ui::MainWindow *ui;
private slots:
    void on_deleteButton_clicked();
    void on_Button_1_clicked();
    void on_Button_2_clicked();
    void on_Button_3_clicked();
    void on_Button_4_clicked();
    void on_Button_5_clicked();
    void on_Button_6_clicked();
    void on_Button_7_clicked();
    void on_Button_8_clicked();
    void on_Button_9_clicked();
    void on_Button_0_clicked();
    void on_Button_00_clicked();
    void on_plus_btn_clicked();
    void on_minus_btn_clicked();
    void on_div_btn_clicked();
    void on_multiply_btn_clicked();
    void on_equal_sign_btn_clicked();
};

#endif // MAINWINDOW_H
Так вот, это чудо моей воспаленной фантазии ведет себя не так как хотелось бы. То бишь - при вычитании складывает, при умножении выводит 0, при делении вылетает. Версия qtcreator 1.3.1. В чем моя проблема?
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #1 : Июнь 07, 2010, 20:42 »

Код:
В чем моя проблема?
В незнании. Чтобы программировать с использованием Qt нужно знать C++ ООП(хотя бы основы).
Creator тут не при чем. Почитайте Шилдта для начала, потом что-нибудь о QT (Шлее например).
Если нормально с английским, то почитай лучше документацию (разумеется после Шилдта).
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
ритт
Гость
« Ответ #2 : Июнь 08, 2010, 07:49 »

ужас какой!
смотреть стандартный пример "калькулятор" и ужасаться вместе со мной...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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