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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как передать все значения из таблицы в одной функции в другую?  (Прочитано 5914 раз)
PulSar.CE3194694
Гость
« : Апрель 28, 2010, 20:08 »

Добрый день!
Есть проблема - не знаю как передать значения, записанные в таблицу в одной функции в другую, чтобы она их считала. Кратко о том, что я делаю.

Создал диалог, в котором на экран монитора выводиться пустая таблица. Пользователь должен вбить в нее некоторые числа, при необходимости юзер с помощью кнопки "Добавить строку" может добавить в таблицу еще строки и вписать в них значения. Далее я в моей этой функции делаю перевод данных ячеек в формат float, далее эти числа записываю в многомерный (двумерный) массив (например Values[N][2]), где N  - итоговое количество строк в нашей таблице. После этого эмитируется мною созданный сигнал из этой функции, в котором я пытаюсь сказать, что передаются этот массив, размерность и кое-какие другие параметры. Этот сигнал принимает некоторый слот, в котором, исходя из введенных значений, рассчитывается некоторая величина.

Проблема в том, что я не знаю, как правильно создать сигнал (как должны быть указаны в нем аргументы) и слот (аналогично). Собственно, как передать двухмерный массив в слот через сигнал?

помогите пожалуйста! Если нужно, могу выложить код.
Записан
0xFF
Гость
« Ответ #1 : Апрель 28, 2010, 20:51 »

Если двумерный массив с участием N, то видимо он создается так?
Код
C++ (Qt)
float **myArr = new float*[N];
for(size_t i=0; i<N; ++i)  myArr[i] = new float[2];
Если так то в сигнал/слот просто передать myArr
Код
C++ (Qt)
void mySignal(float**, size_t);
...
emit mySignal(myArr, N);
« Последнее редактирование: Апрель 28, 2010, 20:53 от 0xFF » Записан
PulSar.CE3194694
Гость
« Ответ #2 : Апрель 29, 2010, 20:35 »

Нет, создавал так:

int N;
N=//тут какнибудь присваиваем значение.
double Array[N][2];
Записан
0xFF
Гость
« Ответ #3 : Апрель 29, 2010, 21:13 »

А разве такое компилируется?
Попробуй так передать:

Код
C++ (Qt)
void mySignal(double arr[][2], size_t N);

в коде просто:
Код
C++ (Qt)
int N;
N=...
double Array[N][2];
emit mySignal(Array, N);
Записан
PulSar.CE3194694
Гость
« Ответ #4 : Май 01, 2010, 12:46 »

Забил на эти массивы. Удалось просто разбить на 2 отдельных массива. А их передать просто как указатель.
Записан
PulSar.CE3194694
Гость
« Ответ #5 : Май 03, 2010, 13:28 »

Теперь другой вопрос: как передать массив (double или QPointF) в void paintEvent(QPaintEvent *event)? Данный массив создавался в вообще отдельном классе (а точнее в одной из функций этого класса), а пейнтэвент объявлен в классе Главного Окна. Вот если его передать в созданную мною функцию, то без проблем, передаю указатель. А туда не знаю как... Ведь добавлять аргументы в paintEvent нельзя, не будет рисовать.

Придумал способ: перебросить все значения этого массива в массив, который я непосредственно создам в private или public зонах класса Г.О. Тогда paintEvent его будет видеть и нарисует. Но тогда не знаю как его объявить. Так: QPointF NewArray[N]  - не получается, пишет кучу ошибок. Как тогда сделать? Или можно вообще по-другому, без создания нового массива? Помогите плиз!  Улыбающийся
Записан
0xFF
Гость
« Ответ #6 : Май 03, 2010, 20:00 »

Код
C++ (Qt)
QPointF *NewArray;
и в paintEvent
NewArray = new QPointF[N];

не годится?
Записан
PulSar.CE3194694
Гость
« Ответ #7 : Май 03, 2010, 20:58 »

Да, спасибо! Уже разобрался! Улыбающийся Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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