Двойное условие на сигнал в connect

149
11 января 2020, 06:40

Можно ли сделать двойное условие на сигнал (например, при нажатии на кнопку в одном случае срабатывала одна функция, а при другом - другая) Что-то вроде

connect(ui->button, SIGNAL(clicked() && k = 0), this, SLOT(func1()))

Answer 1

Обычно, чтобы оставлять код чистым, если нужно сделать подобное, я применяю привязку к слоту лямбда выражения....

QObject::connect(button, &QPushButton::clicked, [=]() {
    if(k==0) {
        emit signalOne();
    } else {
        emit signalTwo();
    }
} );

Эту возможность добавили недавно, в учебных материалах может не фигурировать. В официальной документации место под её описание выделили тут.

READ ALSO
Когда удаляется static поле класса?

Когда удаляется static поле класса?

В какой момент будет удалено статическое поле класса, если деструктор класса виртуальный?

153
Поиск по условию и вывод из вектора

Поиск по условию и вывод из вектора

Есть vector<string> words; со словами, взятыми из файла

195