crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> динамическое изменение свойства виджета QSpinBox
voipp
  опции профиля:
сообщение 1.11.2010, 20:25
Сообщение #1


Участник
**

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

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




Репутация:   0  


в классе у меня определен указатель на QSpinBox :
QSpinBox* spnbx2();

. В конструторе я размещаю вы памяти этот виджет.В слоте setOn(который вызывается при нажатии на кнопку) у меня написано вот что:
void canvasForU_T::setON(){
    this->ON=true;
    this->spnbx2()->setMaximum(matr[0]->getWidth()-1); // <- ошибка в этой строчке
    this->update();

}

Но вот какая ошибка вылезает:
F:/CURS_CHM/chmOne/canvasforu_t.cpp:114: undefined reference to `canvasForU_T::spnbx2()'
Других ошибок нет.В чем может быть дело?

Сообщение отредактировал voipp - 1.11.2010, 20:25
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 1.11.2010, 20:29
Сообщение #2


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

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

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




Репутация:   94  


Цитата(voipp @ 2.11.2010, 0:25) *
QSpinBox* spnbx2();
а что это за скобки такие?

ты указатель объявляешь или функцию?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
voipp
  опции профиля:
сообщение 1.11.2010, 22:05
Сообщение #3


Участник
**

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

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




Репутация:   0  


извиняюсь не заметил.Я убрал скобки и запустил.Ошибки не выскакивали пока не вызвался метод setON.Во время его выполнения происходит segmentation failed.Я проверил выражение в скобках возращает верное значение.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 1.11.2010, 22:13
Сообщение #4


фрилансер
******

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

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




Репутация:   34  


Цитата
spnbx2->setMaximum(matr[0]->getWidth()-1);

тут:
1) либо spnbx2 ==0 (или неинициализировано)
2) либо matr ==0 (или неинициализировано)
3) либо matr[0] ==0 (или неинициализировано)

Сообщение отредактировал Алексей1153 - 1.11.2010, 22:13
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
voipp
  опции профиля:
сообщение 1.11.2010, 22:15
Сообщение #5


Участник
**

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

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




Репутация:   0  


я проверил выражение в скобках :
......
int y=matr[0]->getWidth()-1;
.......

оно равно 5 !

А вот что находится в конструкторе класса:
.......
QSpinBox* spnbx2= new QSpinBox(this);
    spnbx2->setMinimum(0);
    spnbx2->setValue(0);
    spnbx2->setSingleStep(1);
    spnbx2->move(100,0);
    QWidget::connect(spnbx2,SIGNAL(valueChanged(int)),this,SLOT(setX(int)));
...........


в загаловке класса я написал вот это:
 QSpinBox* spnbx,*spnbx2;


Сообщение отредактировал voipp - 1.11.2010, 22:17
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 1.11.2010, 22:36
Сообщение #6


фрилансер
******

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

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




Репутация:   34  


мне кааца, проблема с setX.

Покажи, как слот определён
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
voipp
  опции профиля:
сообщение 1.11.2010, 22:57
Сообщение #7


Участник
**

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

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




Репутация:   0  


вот определение setX:
void canvasForU_T::setX(int i){
    this->paramX=i;
    this->update();
}

а вот немного заголовка класса:
private:
    int paramX,paramT;

Кстати segmentation faild происходит когда debugger доходит до этой строчки:
void canvasForU_T::setON(){
    this->ON=true;
    int y=matr[0]->getWidth()-1;
    this->spnbx2->setMaximum(matr[0]->getWidth()-1);// <----- ВОТ ЗДЕСЬ ВОЗНИКАЕТ ОШИБКА
    this->update();
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 1.11.2010, 23:09
Сообщение #8


фрилансер
******

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

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




Репутация:   34  


1) на данной итерации телепатической связи косяк окопался где-то тут
matr[0]

2) а тебе не лень везде писать "this->" ? :) Это можно не писать.

прицепи проект
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
voipp
  опции профиля:
сообщение 1.11.2010, 23:18
Сообщение #9


Участник
**

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

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




Репутация:   0  



вот проект:
несчастный проект

Сообщение отредактировал voipp - 1.11.2010, 23:18
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 2.11.2010, 7:12
Сообщение #10


фрилансер
******

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

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




Репутация:   34  


voipp, нету ссылки :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




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