Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: flytracer от Апрель 21, 2011, 01:24



Название: проблема с передачей значений
Отправлено: flytracer от Апрель 21, 2011, 01:24
Как умножить два SpinBox, и вывести результат в QLabel?
Если можно дайте какой пример?


Название: Re: проблема с передачей значений
Отправлено: m_ax от Апрель 21, 2011, 01:32
Как умножить два SpinBox, и вывести результат в QLabel?
Если можно дайте какой пример?

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


Название: Re: проблема с передачей значений
Отправлено: flytracer от Апрель 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;         //а сюда вывести результат
}
 


Название: Re: проблема с передачей значений
Отправлено: Nimbus от Апрель 21, 2011, 04:35
В каком-нибудь слоте
Код
C++ (Qt)
LabelH->setText(QString::number(SpinBoxl->value() * SpinBoxR->value()));
 


Название: Re: проблема с передачей значений
Отправлено: RoulanD от Апрель 21, 2011, 05:21
В каком-нибуть не получится. Создайте сначало глобальную переменнаю типа QLabel затем уже в в "каком-нибуть" слоте делайте вывод.


Название: Re: проблема с передачей значений
Отправлено: silver47 от Апрель 21, 2011, 05:48
QLabel это есть не переменная, это есть объект :)

"LabelH = new QLabel;         //а сюда вывести результат" - это в конструкторе виджета нужно проделать один раз, тогда указатель labelH  - будет содержать адрес объекта QLabel.


Название: Re: проблема с передачей значений
Отправлено: Nimbus от Апрель 21, 2011, 05:57
В каком-нибуть не получится. Создайте сначало глобальную переменнаю типа QLabel затем уже в в "каком-нибуть" слоте делайте вывод.
Тогда уж поле у класса autogentest :)


Название: Re: проблема с передачей значений
Отправлено: flytracer от Апрель 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()));        
}
 
 
 


Название: Re: проблема с передачей значений
Отправлено: flytracer от Апрель 22, 2011, 15:49
Когда я так делаю, программа запускается, но только я хочу изменить значение l или R программа вылетает.
И еще один вопрос почему после компиляции, в криэйторе я могу запустить exe с программой, а как открываю в папке, то exe незапускаеться, может это что-то с самим средой?


Название: Re: проблема с передачей значений
Отправлено: m_ax от Апрель 22, 2011, 20:20
Когда я так делаю, программа запускается, но только я хочу изменить значение l или R программа вылетает.
Это не удивительно)
Зачем дважды LabelH создавать?



Название: Re: проблема с передачей значений
Отправлено: flytracer от Апрель 27, 2011, 12:27
Напишите ктото свой Skype


Название: Re: проблема с передачей значений
Отправлено: Etud от Апрель 27, 2011, 19:01
Напишите ктото свой Skype

Ой, не смешите мои старые кости !  ;D

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

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

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

А указатель куда делся ?


Название: Re: проблема с передачей значений
Отправлено: RoulanD от Апрель 28, 2011, 05:55
flytracer
Вам срочно нужно понять синтаксис С++ и структуру ООП.
И чётко понимать что если вы создаёте объект типа QLabel то вы создаёте указатель на него.
Код
C++ (Qt)
QLabel *laBel=new QLabel();
 


Название: Re: проблема с передачей значений
Отправлено: GreatSnake от Апрель 28, 2011, 08:32
Цитировать
И чётко понимать что если вы создаёте объект типа QLabel то вы создаёте указатель на него.
Абсолютно не факт.


Название: Re: проблема с передачей значений
Отправлено: RoulanD от Апрель 28, 2011, 15:44
Qt говорит что факт, на сколько я знаю =)