Russian Qt Forum

Qt => Вопросы новичков => Тема начата: gusha от Декабрь 09, 2014, 12:50



Название: непонятная ошибка
Отправлено: gusha от Декабрь 09, 2014, 12:50
здраствуйте ! есть вопрос у меня 2 файла main.cpp и proekt1.cpp
main.cpp

Код
C
#include "proekt1.h"
#include <QApplication>
 
float a0,b0,result1;
int main(int argc, char *argv[])
{
   result1=a0+b0;
   QApplication a(argc, argv);
 
   Proekt1 w;
   w.show();
 
   return a.exec();
}
 



proekt1.cpp  :

Код
C
#include "proekt1.h"
#include "ui_proekt1.h"
 
Proekt1::Proekt1(QWidget *parent) :
   QMainWindow(parent),
   ui(new Ui::Proekt1)
{
   ui->setupUi(this);
}
 
Proekt1::~Proekt1()
{
   delete ui;
}
void Proekt1::on_pushButton_clicked()
{
  extern float a0,b0,result1;
  a0=ui->lineedit->text().toFloat();
  b0=ui->lineedit2->text().toFloat();
 
  ui->textedit->setText(QString::number(result1));
}
 
суть простая : принимаю на вход  2 числа , в main.cpp делаю с ними арифметические операции, и после вывожу результат в textedit.

вопрос в следующем  , почему выдает 0 в любом случае и как это исправить ? ощущение такое будто main.cpp не видит значений переменных, может нужно прописать сигналы/слоты . если вставляю арифметические операции  в on_pushButton_clicked() тогда считает все верно, иначе не работает. а мне позарез надо чтобы переменные считались через несколько функций  в main и после всех расчетов спойкойно выводить результаты на экран.


Название: Re: непонятная ошибка
Отправлено: Пантер от Декабрь 09, 2014, 12:53
1. Не вижу инициализации чисел.
2. Передавай числа в конструктор класса Proekt1, не надо всякие глобальные переменные юзать.
3. Вообще не понял - ты до создания класса Proekt1 делаешь суммирование, а потом уже присваиваешь значения. Ты не то делаешь и не так.


Название: Re: непонятная ошибка
Отправлено: gil9red от Декабрь 09, 2014, 13:20
Зачем столько ненужных действий с глобальными числами?

Достаточно было сделать так:
Код
C++ (Qt)
void Proekt1::on_pushButton_clicked()
{
  float a0 = ui->lineedit->text().toFloat();
  float b0 = ui->lineedit2->text().toFloat();
 
  ui->textedit->setText(QString::number(a0 + b0));
}
 


Название: Re: непонятная ошибка
Отправлено: gusha от Декабрь 09, 2014, 15:33
2. Передавай числа в конструктор класса Proekt1, не надо всякие глобальные переменные юзать.


так?
Код
C
 
Proekt1::Proekt1(QWidget *parent, float a0, float b0, float result1) :
   QMainWindow(parent),
   ui(new Ui::Proekt1)
{
   ui->setupUi(this);
}
 
 

добавил числа в конструктор, боюсь где-то накосячил(c qt разбираюсь совсем недавно) выдает ошибки :

C:\Users\palek\Documents\New\proekt1\proekt1.h:18: ошибка: default argument missing for parameter 2 of 'Proekt1::Proekt1(QWidget*, float, float, float)'
     explicit Proekt1(QWidget *parent = 0,float a0,float b0,float result1);
              ^
такая же ошибка для 3его и 4ого аргументов.


числа инициализировал
порядок поменял


Код
C
main.cpp
 
#include "proekt1.h"
#include <QApplication>
float a0,b0,result1;
 
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   Proekt1 w;
   w.show();
 
   a0=0;
   b0=0;
   result1=0;
   result1=a0+b0;
   return a.exec();
}
 
 

если не трудно подскажи пожалуйста более конкретно, где я ошибся.



Название: Re: непонятная ошибка
Отправлено: Пантер от Декабрь 09, 2014, 15:36
Тебе gil9red уже все объяснил. А я советую почитать книги по c++, ибо ты элементарного не знаешь.


Название: Re: непонятная ошибка
Отправлено: gusha от Декабрь 09, 2014, 15:53
Тебе gil9red уже все объяснил. А я советую почитать книги по c++, ибо ты элементарного не знаешь.
он объяснил то что и так работало, я в начале писал что с этим все ок, не понимаю как переменную объявить так чтобы компилятор считал ее  именно в main.cpp и после расчетов он выводилась в textedit (к примеру)

в том-то и сложность (тут просто сложение) у меня
будет 5 одномерных массивов по 5 элементов в каждом, 6 констант и 9 переменных лол, и все это пересчитывается по нескольку раз и по разным формулам, я просто пытаюсь общий принцип понять (типа ввел данные в лайн эдит , их обсчитало функциями из мейна в зависимотсти от условий .в итоге прога вывела данные в несколько текстэдитов или табличку) 2 книги читаю , но видимо пока не добрался до этого

p.s. мог бы найти ответ в книжке не спрашивал бы лишний раз.


Название: Re: непонятная ошибка
Отправлено: Пантер от Декабрь 09, 2014, 16:20
А зачем обсчитывать в main???


Название: Re: непонятная ошибка
Отправлено: gil9red от Декабрь 09, 2014, 19:45
Тебе gil9red уже все объяснил. А я советую почитать книги по c++, ибо ты элементарного не знаешь.

А теперь прочитай заного и посмотри на ник :)


Название: Re: непонятная ошибка
Отправлено: kambala от Декабрь 09, 2014, 19:54
за ногу?..


Название: Re: непонятная ошибка
Отправлено: Пантер от Декабрь 09, 2014, 22:38
Тебе gil9red уже все объяснил. А я советую почитать книги по c++, ибо ты элементарного не знаешь.

А теперь прочитай заного и посмотри на ник :)
?


Название: Re: непонятная ошибка
Отправлено: gil9red от Декабрь 09, 2014, 22:56
?

Показалось... неправильно диагонально прочитал (зрение плохое  :)) ;D


Название: Re: непонятная ошибка
Отправлено: Пантер от Декабрь 09, 2014, 23:56
?

Показалось... неправильно диагонально прочитал (зрение плохое  :)) ;D
Ты это, зрение-то поправь. Говорят, морковку хавать нужно, чернику всякую и возле компа поменьше торчать.


Название: Re: непонятная ошибка
Отправлено: gil9red от Декабрь 10, 2014, 08:52
?

Показалось... неправильно диагонально прочитал (зрение плохое  :)) ;D
Ты это, зрение-то поправь. Говорят, морковку хавать нужно, чернику всякую и возле компа поменьше торчать.

С моим зрением морковку и чернику не хавать нужно, а втирать в глаза :D