- *programming *c++Yet another one. За такое руки оторвут?
const int pos = std::max (0, Ui_.VariantBox_->findText (current));
Ui_.VariantBox_->setCurrentIndex (pos);
Ну и да, раз уже почти к месту — приятно, что для добавления возможности писать не только на главный ресурс, но и на остальные по выбору, пришлось добавить только кнопочку на панельку и считывание ее значения. Все остальное уже было в архитектуре. Ня.from Azoth_primary, 6 months ago
Replies (9)
- @aix27249:хотя на первый взгляд конструкция верная, я бы руки за такое оторвал, ибо без детального чтения документации по findText и setCurrentIndex нельзя точно сказать, корректная ли она или нетfrom AgiliaLinux, 6 months ago
- @0xd34df00d:@aix27249 Ну, любой кутешник с более-менее опытом привык к тому, что find* возвращает -1, если оно не найдено.
Да и вообще стандартная практика же.from web, 6 months ago, in reply to /2 - @aix27249:@0xd34df00d это то да, а вот что выдаст setCurrentIndex(-1) я, честно говоря, не помнюfrom AgiliaLinux, 6 months ago, in reply to /3
- @0xd34df00d:@aix27249 Ну да. Поэтому мы устанавливаем не меньшее нуля значение, за этим и std::max.
И да, по опыту — будет сегфолт.from web, 6 months ago, in reply to /4 - @aix27249:@0xd34df00d еще стоит учесть то, что если count() равен 0 (то бишь бокс пустой), то даже setCurrentIndex(0) может вызвать сегфолт. Этот момент я тоже не могу найти описанным в доках, но судя по тому что я уже на автомате ставлю такие проверки — так оно и есть :)from AgiliaLinux, 6 months ago, in reply to /6
- @0xd34df00d:@aix27249 Ну, тут надо отметить, что этот код выполняется в if (Ui_.VariantBox_->count () > 1)... )from web, 6 months ago, in reply to /7