Russian Qt Forum

Qt => Общие вопросы => Тема начата: PulSar.CE3194694 от Август 09, 2010, 11:38



Название: [Решено] Проблема с переданным массивом
Отправлено: PulSar.CE3194694 от Август 09, 2010, 11:38
Добрый день!
Не знаю, как решить эту проблему. В Главном Окне создал массив Array типа QPointF и вписал в него координаты. Далее через сигналы/слоты передал указатель на него в некоторый виджет MyWidget. Теперь в этом виджете в одном из слотов хочу координаты x и y умножить соответственно на коэффициенты K1 и K2 (созданы в этом виджете). Вопрос как это сделать? Думал получится так, но выдает ошибку: base operand of "->" has non-pointer type "QPointF".
Код:
for(i=0; i<N; i++)
{
     Array[i]=QPointF(Array[i]->x()*K1, Array[i]->y()*K2);
}
Или если также в цикле писать нечто вроде такого: Array->x() = Array->x()*K1, то также будет ошибка.((


Название: Re: Проблема с переданным массивом
Отправлено: Igors от Август 09, 2010, 11:47
Код:
for (i = 0; i < N; i++)
{
     Array[ i ].rx() *= K1;
     Array[ i ].ry() *= K2;
}


Название: Re: Проблема с переданным массивом
Отправлено: Joss от Август 09, 2010, 11:49
: массив Array типа QPointF

Массив объектов или указателей на объекты? Судя по "Array=QPointF..." я не вижу здесь указателей.


Название: Re: Проблема с переданным массивом
Отправлено: PulSar.CE3194694 от Август 09, 2010, 12:10
Igors, через точку тоже не получается, пишет такое: lvalue required as left operand of assignment.
Joss, делаю так:
В заголовочном файле Г.О. есть: QPointF *Array;
В одном из слотов Г.О. есть: Array = new QPointF[N];
В заголовочном файле Г.О. есть сигнал: void MySignal(QPointF *Array);
В одном из слотов Г.О. отправляется сигнал: emit MySignal(Array);
А в виджете:
void MyWidget::MySlot(QPointF *Array)
{
   //...Здесь нужно умножить координаты.
}


Название: Re: Проблема с переданным массивом
Отправлено: PulSar.CE3194694 от Август 09, 2010, 12:11
Массив из объектов.


Название: Re: Проблема с переданным массивом
Отправлено: Igors от Август 09, 2010, 12:20
Igors, через точку тоже не получается, пишет такое: lvalue required as left operand of assignment.
Ну значит rx (ry) - подправил


Название: Re: Проблема с переданным массивом
Отправлено: PulSar.CE3194694 от Август 09, 2010, 12:28
Igors, через точку тоже не получается, пишет такое: lvalue required as left operand of assignment.
Ну значит rx (ry) - подправил
Спасибо, получилось!