Russian Qt Forum
Ноябрь 23, 2024, 03:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: оператор if() без скобок  (Прочитано 2945 раз)
Ilya_181
Новичок

Offline Offline

Сообщений: 33


Просмотр профиля
« : Ноябрь 06, 2017, 01:35 »

Код
C++ (Qt)
          if(str == "")
               Item->document()->setDefaultFont(cursor.charFormat().font());

Я так понимаю строка всегда будет выполняться? Почему?
Я всегда понимал что, следующая строка, после оператора без скобок, будет выполняться согласно условию.  И строка в смысле, все то что написано до ; Если, например, после оператора будет 2 строки, то 1 выполняется согласно условию, а 2 выполняется всегда. Разве не так?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #1 : Ноябрь 06, 2017, 11:57 »

Разве не так?

Так. Строки ты видимо сравниваешь неправильно. Ибо QString() и QString("") - разные строки. На пустоту нужно проверять https://doc.qt.io/qt-5/qstring.html#isEmpty
Записан
titan83
Гость
« Ответ #2 : Ноябрь 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());

Тогда все будет так, как ты ожидаешь.
ЗЫ Сам вставал на эти грабли.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.154 секунд. Запросов: 22.