crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

3 страниц V   1 2 3 >  
Ответить в данную темуНачать новую тему
> Создание элементов внутри условий
RazrFalcon
  опции профиля:
сообщение 2.10.2011, 15:29
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Как лучше написать такой код? Он не работает, так как элементы создаются внутри условия...
if (step > 1)
  QSpinBox *spinBox = new QSpinBox();
else
  QDoubleSpinBox *spinBox = new QDoubleSpinBox();

spinBox->setValue(value);
spinBox->setMinimum(min);
spinBox->setMaximum(max);
spinBox->setSingleStep(step);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 2.10.2011, 15:41
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


Цитата(RazrFalcon @ 2.10.2011, 21:29) *
Как лучше написать такой код? Он не работает, так как элементы создаются внутри условия...
if (step > 1)
  QSpinBox *spinBox = new QSpinBox();
else
  QDoubleSpinBox *spinBox = new QDoubleSpinBox();

spinBox->setValue(value);
spinBox->setMinimum(min);
spinBox->setMaximum(max);
spinBox->setSingleStep(step);

это почему не работают ? Очень даже работают. Если написать spinBox->show(); видно будет. А если указать new QSpinBox(this); то и на форме появятся :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 2.10.2011, 15:48
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


error: ‘spinBox’ was not declared in this scope
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 2.10.2011, 15:59
Сообщение #4


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


Цитата(RazrFalcon @ 2.10.2011, 21:48) *
error: ‘spinBox’ was not declared in this scope

проглядел. Все правильно надо где то так
if (step > 1){
  QSpinBox *spinBox = new QSpinBox();
  spinBox->setValue(value);
  spinBox->setMinimum(min);
  spinBox->setMaximum(max);
  spinBox->setSingleStep(step);
} else
  QDoubleSpinBox *spinBox = new QDoubleSpinBox();

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 2.10.2011, 16:07
Сообщение #5


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Нет :lol:
Тогда уж так:
if (step > 1){
  QSpinBox *spinBox = new QSpinBox();
  spinBox->setValue(value);
  spinBox->setMinimum(min);
  spinBox->setMaximum(max);
  spinBox->setSingleStep(step);
} else {
  QDoubleSpinBox *spinBox = new QDoubleSpinBox();
  spinBox->setValue(value);
  spinBox->setMinimum(min);
  spinBox->setMaximum(max);
  spinBox->setSingleStep(step);
}


Сообщение отредактировал RazrFalcon - 2.10.2011, 16:07
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 2.10.2011, 16:13
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


Цитата(RazrFalcon @ 2.10.2011, 22:07) *
Нет :lol:
Тогда уж так:
if (step > 1){
  QSpinBox *spinBox = new QSpinBox();
  spinBox->setValue(value);
  spinBox->setMinimum(min);
  spinBox->setMaximum(max);
  spinBox->setSingleStep(step);
} else {
  QDoubleSpinBox *spinBox = new QDoubleSpinBox();
  spinBox->setValue(value);
  spinBox->setMinimum(min);
  spinBox->setMaximum(max);
  spinBox->setSingleStep(step);
}

я не в курсе что там в программе дальше. Что вижу, то пишу. Не телепат
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 2.10.2011, 16:20
Сообщение #7


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Ок. Перефразирую. Как упростить код, который я привел последним?
Упростить нужно, так как там одно и тоже все.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
maint
  опции профиля:
сообщение 2.10.2011, 16:35
Сообщение #8


Участник
**

Группа: Участник
Сообщений: 235
Регистрация: 3.8.2009
Из: Иркутск
Пользователь №: 982

Спасибо сказали: 28 раз(а)




Репутация:   2  


Цитата(RazrFalcon @ 2.10.2011, 22:20) *
Ок. Перефразирую. Как упростить код, который я привел последним?
Упростить нужно, так как там одно и тоже все.

создать наподобии вот такого уродца
    QWidget *w;
    if (step > 1){
      w = new QSpinBox(this);
      ((QSpinBox *) w)->setValue(value);
    } else {
      w = new QDoubleSpinBox(this);
      ((QDoubleSpinBox *) w)->setValue(value);
    }
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 2.10.2011, 21:14
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Раскрывающийся текст
if (step > 1)
  QSpinBox *spinBox = new QSpinBox();
else
  QDoubleSpinBox *spinBox = new QDoubleSpinBox();

spinBox->setValue(value);
spinBox->setMinimum(min);
spinBox->setMaximum(max);
spinBox->setSingleStep(step);
В этом коде видно, что оба счётчика (Spinbox) имеют одинаковые методы и устанавливаются одинаковые значения (типа "Целое"). Это наводит на мысль о том, что можно избавится от одного из них - QDoubleSpinBox.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 2.10.2011, 21:55
Сообщение #10


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


step - float
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V   1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 23.11.2024, 5:59