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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: проблема с передачей значений  (Прочитано 5902 раз)
flytracer
Гость
« : Апрель 21, 2011, 01:24 »

Как умножить два SpinBox, и вывести результат в QLabel?
Если можно дайте какой пример?
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #1 : Апрель 21, 2011, 01:32 »

Как умножить два SpinBox, и вывести результат в QLabel?
Если можно дайте какой пример?

Любезнейший, спинбоксы не умножаются)) Можно умножить числа, кои они содержат.
Знаете как умножить два числа? Это не сложно)
Код
C++ (Qt)
c = a * b;
 
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
flytracer
Гость
« Ответ #2 : Апрель 21, 2011, 02:26 »

А если у меня такая, ситуация, тогда что делать?

Код
C++ (Qt)
void autogentest::createValAG()
{
   ValAGGroup = new QGroupBox(tr("Parameters Autogenerator"));
   ValAGGroup->setFixedSize(200,500);
 
   QLabel *Labell = new QLabel(tr("Enter a value l"));
   QSpinBox *SpinBoxl = new QSpinBox;   //Значение этих двух SpinBox, нужно умножить
   SpinBoxl->setRange(-100, 100);
   SpinBoxl->setSingleStep(1);
 
   QLabel *LabelR = new QLabel(tr("Enter a value R"));
   QSpinBox *SpinBoxR = new QSpinBox;
   SpinBoxR->setRange(-100, 100);
   SpinBoxR->setSingleStep(1);
   SpinBoxR->setValue(0);
 
}
 
void autogentest::createEdit()
{
   EditGroup = new QGroupBox(tr("Resolt"));
   EditGroup->setFixedSize(500,500);
 
   LabelH = new QLabel;         //а сюда вывести результат
}
 
Записан
Nimbus
Гость
« Ответ #3 : Апрель 21, 2011, 04:35 »

В каком-нибудь слоте
Код
C++ (Qt)
LabelH->setText(QString::number(SpinBoxl->value() * SpinBoxR->value()));
 
Записан
RoulanD
Гость
« Ответ #4 : Апрель 21, 2011, 05:21 »

В каком-нибуть не получится. Создайте сначало глобальную переменнаю типа QLabel затем уже в в "каком-нибуть" слоте делайте вывод.
« Последнее редактирование: Апрель 21, 2011, 05:23 от RoulanD » Записан
silver47
Гость
« Ответ #5 : Апрель 21, 2011, 05:48 »

QLabel это есть не переменная, это есть объект Улыбающийся

"LabelH = new QLabel;         //а сюда вывести результат" - это в конструкторе виджета нужно проделать один раз, тогда указатель labelH  - будет содержать адрес объекта QLabel.
Записан
Nimbus
Гость
« Ответ #6 : Апрель 21, 2011, 05:57 »

В каком-нибуть не получится. Создайте сначало глобальную переменнаю типа QLabel затем уже в в "каком-нибуть" слоте делайте вывод.
Тогда уж поле у класса autogentest Улыбающийся
Записан
flytracer
Гость
« Ответ #7 : Апрель 21, 2011, 09:49 »

То делать типа так
Код
C++ (Qt)
QLabel LabelH = new QLabel;
 
void autogentest::createValAG()
{
      ****
    connect(SpinBoxl,SIGNAL(valueChanged(int)),this,SLOT(fun()))
    connect(SpinBoxR,SIGNAL(valueChanged(int)),this,SLOT(fun()))  
}
 
void autogentest::createEdit()
{
   LabelH = new QLabel;        
}
 
void autogentest::fun()
{
   LabelH->setText(QString::number(SpinBoxl->value() * SpinBoxR->value()));        
}
 
 
 
Записан
flytracer
Гость
« Ответ #8 : Апрель 22, 2011, 15:49 »

Когда я так делаю, программа запускается, но только я хочу изменить значение l или R программа вылетает.
И еще один вопрос почему после компиляции, в криэйторе я могу запустить exe с программой, а как открываю в папке, то exe незапускаеться, может это что-то с самим средой?
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #9 : Апрель 22, 2011, 20:20 »

Когда я так делаю, программа запускается, но только я хочу изменить значение l или R программа вылетает.
Это не удивительно)
Зачем дважды LabelH создавать?

Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
flytracer
Гость
« Ответ #10 : Апрель 27, 2011, 12:27 »

Напишите ктото свой Skype
Записан
Etud
Гость
« Ответ #11 : Апрель 27, 2011, 19:01 »

Напишите ктото свой Skype

Ой, не смешите мои старые кости !  Смеющийся

Вам тут уже написали, что Вы объявили 2 раза LabelH.

А почему не в конструкторе ? Вот это:

Код
C++ (Qt)
QLabel LabelH = new QLabel;
 

А указатель куда делся ?
Записан
RoulanD
Гость
« Ответ #12 : Апрель 28, 2011, 05:55 »

flytracer
Вам срочно нужно понять синтаксис С++ и структуру ООП.
И чётко понимать что если вы создаёте объект типа QLabel то вы создаёте указатель на него.
Код
C++ (Qt)
QLabel *laBel=new QLabel();
 
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #13 : Апрель 28, 2011, 08:32 »

Цитировать
И чётко понимать что если вы создаёте объект типа QLabel то вы создаёте указатель на него.
Абсолютно не факт.
Записан

Qt 5.11/4.8.7 (X11/Win)
RoulanD
Гость
« Ответ #14 : Апрель 28, 2011, 15:44 »

Qt говорит что факт, на сколько я знаю =)
« Последнее редактирование: Апрель 30, 2011, 05:41 от RoulanD » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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