Название: Калькулятор
Отправлено: 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. В чем моя проблема?
Название: Re: Калькулятор
Отправлено: kibsoft от Июнь 07, 2010, 20:42
В незнании. Чтобы программировать с использованием Qt нужно знать C++ ООП(хотя бы основы). Creator тут не при чем. Почитайте Шилдта для начала, потом что-нибудь о QT (Шлее например). Если нормально с английским, то почитай лучше документацию (разумеется после Шилдта).
Название: Re: Калькулятор
Отправлено: ритт от Июнь 08, 2010, 07:49
ужас какой! смотреть стандартный пример "калькулятор" и ужасаться вместе со мной...
|