Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Ilya_181 от Ноябрь 06, 2017, 01:35



Название: оператор if() без скобок
Отправлено: Ilya_181 от Ноябрь 06, 2017, 01:35
Код
C++ (Qt)
          if(str == "")
               Item->document()->setDefaultFont(cursor.charFormat().font());

Я так понимаю строка всегда будет выполняться? Почему?
Я всегда понимал что, следующая строка, после оператора без скобок, будет выполняться согласно условию.  И строка в смысле, все то что написано до ; Если, например, после оператора будет 2 строки, то 1 выполняется согласно условию, а 2 выполняется всегда. Разве не так?


Название: Re: оператор if() без скобок
Отправлено: Alex Custov от Ноябрь 06, 2017, 11:57
Разве не так?

Так. Строки ты видимо сравниваешь неправильно. Ибо QString() и QString("") - разные строки. На пустоту нужно проверять https://doc.qt.io/qt-5/qstring.html#isEmpty


Название: Re: оператор if() без скобок
Отправлено: titan83 от Ноябрь 07, 2017, 09:23
AlexCustov прав.
Почитай для общего развития: https://woboq.com/blog/qstringliteral.html
Твое сравнение (если это Qt5) должно выглядеть так:
Код:
if (str == QStringLiteral(""))
    Item->document()->setDefaultFont(cursor.charFormat().font());
или
Код:
if(str.isEmpty() == true)
    Item->document()->setDefaultFont(cursor.charFormat().font());

Тогда все будет так, как ты ожидаешь.
ЗЫ Сам вставал на эти грабли.