Re[3]: Вызов метода при передаче имени объекта в функцию
От: Gordon Freeman  
Дата: 19.09.17 08:06
Оценка: +1
Здравствуйте, Gordon Freeman, Вы писали:

GF>Здравствуйте, Igore, Вы писали:


I>>Здравствуйте, Gordon Freeman, Вы писали:


GF>>>Доброго всем времени дня.

GF>>>Пытаюс вызвать метод при передаче имени объекта в функцию.
I>>Передача дополнительных данных которых нет в сигнале
Автор: Igore
Дата: 18.02.15


GF>>>Подгружаю данные в таблицу:

GF>>>Direction_0_1 = new QTableWidget(0, 0, Direction_0);
I>>Лучше сразу хорошо делать, использовать QTableView

GF>>>По нажатию кнопки колонки должны изменить ширину по размеру данных. В первом случае всё работает:

GF>>>connect(resizeallcol, SIGNAL(clicked()), this, SLOT(SetAutocol()));
GF>>>Во втором нет:
GF>>>connect(resizeallcol, SIGNAL(clicked()), this, SLOT(SetAutocol(Direction_0_1)));
I>>Слот не может принимать больше параметров чем испускается в сигнале.

GF>>>Компилятор не ругается, но результат нулевой.

I>>При таком синтаксисе ошибка во время исполнения, в Output выведется, и connect false вернет

GF>>>P.S. Я в Qt и С++ новичёк. Учу потихоньку. Прошу сильно не ругать.

I>>А зачем тебе передавать table как параметр?
I>>
I>>connect(resizeallcol, SIGNAL(clicked()), this, SLOT(SetAutocolDirection_0_1()));
I>>void MainWindow::SetAutocolDirection_0_1()
I>>{
I>>  Direction_0_1->resizeColumnsToContents();
I>>}
I>>// Или даже объединить
I>>connect(resizeallcol, &QPushButton::clicked, this, [this](){Direction_0_1->resizeColumnsToContents();});
I>>



GF>Здравствуйте.

GF>Спасибо всем за ответы.

GF>Программа должна подгружать .csv файлы (коих может быть более дюжины) в таблицы. Затем в таблицах всё фильтроваться (удалять ненужное и т.д.).

GF>Т.к. количество таблиц не фиксировано, я попытался написать универсальную ф-ю, которая выполняля бы нужные операции при передаче в неё указателя на таблицу как параметра.
GF>Если вызываю ф-ю без параметра, при этом в теле её указывая таблицу (мини-слот как указал К13), то всё пашет: connect(resizeallcol, SIGNAL(clicked()), this, SLOT(SetAutocol()));
GF>Проблема в том, что тогда на каждую таблицу придётся писать отдельную ф-ю.

А ларчик просто открвыался:
connect(resizeallcol, SIGNAL(clicked()), Direction_0_1, SLOT(resizeColumnsToContents()));
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.