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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: непонятная ошибка  (Прочитано 4777 раз)
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 и после всех расчетов спойкойно выводить результаты на экран.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Декабрь 09, 2014, 12:53 »

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

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #2 : Декабрь 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));
}
 
Записан

gusha
Гость
« Ответ #3 : Декабрь 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();
}
 
 

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

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

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #4 : Декабрь 09, 2014, 15:36 »

Тебе gil9red уже все объяснил. А я советую почитать книги по c++, ибо ты элементарного не знаешь.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
gusha
Гость
« Ответ #5 : Декабрь 09, 2014, 15:53 »

Тебе gil9red уже все объяснил. А я советую почитать книги по c++, ибо ты элементарного не знаешь.
он объяснил то что и так работало, я в начале писал что с этим все ок, не понимаю как переменную объявить так чтобы компилятор считал ее  именно в main.cpp и после расчетов он выводилась в textedit (к примеру)

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

p.s. мог бы найти ответ в книжке не спрашивал бы лишний раз.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Декабрь 09, 2014, 16:20 »

А зачем обсчитывать в main???
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #7 : Декабрь 09, 2014, 19:45 »

Тебе gil9red уже все объяснил. А я советую почитать книги по c++, ибо ты элементарного не знаешь.

А теперь прочитай заного и посмотри на ник Улыбающийся
« Последнее редактирование: Декабрь 09, 2014, 19:49 от gil9red » Записан

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

Сообщений: 4747



Просмотр профиля WWW
« Ответ #8 : Декабрь 09, 2014, 19:54 »

за ногу?..
Записан

Изучением 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
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #9 : Декабрь 09, 2014, 22:38 »

Тебе gil9red уже все объяснил. А я советую почитать книги по c++, ибо ты элементарного не знаешь.

А теперь прочитай заного и посмотри на ник Улыбающийся
?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #10 : Декабрь 09, 2014, 22:56 »

?

Показалось... неправильно диагонально прочитал (зрение плохое  Улыбающийся) Смеющийся
Записан

Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #11 : Декабрь 09, 2014, 23:56 »

?

Показалось... неправильно диагонально прочитал (зрение плохое  Улыбающийся) Смеющийся
Ты это, зрение-то поправь. Говорят, морковку хавать нужно, чернику всякую и возле компа поменьше торчать.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #12 : Декабрь 10, 2014, 08:52 »

?

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

С моим зрением морковку и чернику не хавать нужно, а втирать в глаза Веселый
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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