2017-02-14 8 views
1

Итак, я хочу сделать кнопку, которая становится плоской при нажатии в QT5. Я прочитал это
https://woboq.com/blog/new-signals-slots-syntax-in-qt5.html
и кажется, что я должен быть в состоянии сделать это, не создавая собственный класс кнопок. Таким образом, я получилQT5 подключить сигнал к функции

QPushButton* button = new QPushButton("text", parent); QObject::connect(button, &QPushButton::clicked, button, &QPushButton::isFlat(true));
, и я получаю
error: call to non-static member function without an object argument
Мои вопросы; я читаю этот новый синтаксис неправильно? Могу ли я подключаться только к статическим функциям?

ответ

3

Вы пытаетесь подключить метод не, например, использовать lambda, например, для захвата экземпляра кнопки:

QObject::connect(button, &QPushButton::clicked, button, 
       [&button]() {button->setFlat(true)}); 

Не тестировалось.

+0

Получил меня на правильном пути, я думаю. '[& button]() {button-> setFlat (true);}' Должно быть установлено setflat (мое плохое). Это компилируется, но также срабатывает при нажатии кнопки. – Darakian

+0

@ Darakian, каков код ошибки? – Netwave

+0

Получил это. Теперь с помощью '[=]() {button-> setFlat (true);}' в качестве конечного параметра, и все хорошо. Ты мужчина! – Darakian