Qt - аргументы в сигнальных слотах - PullRequest
4 голосов
/ 12 марта 2010

У меня есть QPushButton, QDateEdit и другой пользовательский объект. Я хочу подключить кнопку к объекту редактирования даты таким образом, чтобы при нажатии кнопки объект редактирования даты изменил свою установленную дату на дату, определенную в пользовательском объекте. Вроде как:

connect(pushbutton,SIGNAL(clicked()),dateedit,SLOT(setDate(custom_object.getDate())));

но я не могу этого сделать. По-видимому, оператор connect не определяет, какая информация передается из сигнала в слот, а только тип передаваемой информации. Есть ли способ сделать это без создания нового класса?

1 Ответ

5 голосов
/ 12 марта 2010

Обычно проще всего создать функцию-оболочку, которая содержит эту функцию. Другими словами:

connect(pushbutton, SIGNAL(clicked()), SLOT(setDateFromCustomObject()));

А потом, в том же классе, который вызывает connect:

void YourClass::setDateFromCustomObject() {
  dateEdit->setDate(custom_object.getDate());
}

Возможно связать время привязки с конкретными аргументами и объектами, используя внешнюю библиотеку Qxt . Не похоже, что их документация полна или актуальна, но они предоставляют некоторые приятные функциональные возможности. Я считаю это только для опытных пользователей.

...