@jackroll
Сверхразум

Не могу использовать операции ветвления в Qt?

// ... code!

void MyDialog::EnableOk()
{
    ui->okbutton->setEnabled(ui->lineEdit->hasAcceptableInput());
    switch(ui->okbutton->clicked())
    {
        default:
        QMessageBox *msg = new QMessageBox;
        msg->setText("TEST!!!");
        msg->exec();
        break;
    }
}

// ... code!


При попытке компиляции выходит ошибка:
C2450: switch expression of type 'void' is illegal
Expressions of type void cannot be converted to other types

Пробовал писать так:
void MyDialog::EnableOk()
{
    ui->okbutton->setEnabled(ui->lineEdit->hasAcceptableInput());
    bool b = ui->okbutton->clicked();
    switch(b)
    {
    default:
        QMessageBox *msg = new QMessageBox;
        msg->setText("TEST!!!");
        msg->exec();
        break;
    }
}


Выходит ошибка:
C2440: 'initializing' : cannot convert from 'void' to 'bool'
Expressions of type void cannot be converted to other types

Что делать? Как исправить? Почему так происходит?
  • Вопрос задан
  • 2358 просмотров
Решения вопроса 1
@AlexP11223
Что вы хотите достичь такой странной конструкцией? С чего вы взяли, что clicked() должно возвращать bool? Компилятор же и говорит, что оно void (и вообще это сигнал, его только emit'ить можно или connect'ить к нему слот).
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
ui->okbutton->clicked() судя по всему возвращает void. Дальше читать тексты ошибок.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы