Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt GUI _ Ресурсозатратность операции show()

Автор: RazrFalcon 15.11.2011, 19:16

Есть собственный QScrollBar. Который начинает отображаться после определенного количества обработанных элементов.

Выглядит это приблизительно так:

if (count > 10)
    scrollBar->show();
То есть, начиная с 10-и, каждый раз будет вызываться show(). Насколько это затратно?
Также можно сделать что то в духе:
if (count > 10 && scrollBar->isHidden())
    scrollBar->show();
Но не знаю на сколько это лучше...

Автор: BRE 15.11.2011, 19:31

Совершенно не затратно.
Вначале метода setVisible есть проверка, если виджет, который хотят показать уже виден, то сразу выйти из метода.

Автор: ernie 16.11.2011, 7:01

А если сделать просто if (count == 11) {
scrollBar->show();
}
? :)

Автор: sidsukana 16.11.2011, 7:08

Цитата(ernie @ 16.11.2011, 10:01) *
А если сделать просто if (count == 11) {
scrollBar->show();
}
? :)


Вы улавливаете суть того что автор написал?
Если надо > 10 значит там может быть и 12 и 13 и 123.

Автор: ernie 16.11.2011, 7:25

Цитата(sidsukana @ 16.11.2011, 13:08) *
Цитата(ernie @ 16.11.2011, 10:01) *
А если сделать просто if (count == 11) {
scrollBar->show();
}
? :)


Вы улавливаете суть того что автор написал?
Если надо > 10 значит там может быть и 12 и 13 и 123.

"Который начинает отображаться после определенного количества обработанных элементов"
Т.е. элементы где-то обрабатываются,потом судя по всему идёт эта проверка,так как автора волнует,что потом это много раз будет вызывать,я полагаю что проверка в цикле,вот оттуда и вывод такой:)

Автор: RazrFalcon 16.11.2011, 7:44

Да. Проверка в цикле.
Имелось ввиду то, что затратней: постоянная проверка или show().

А разницы между
if (count > 10)
и
if (count == 11)
в данном случае никакой.

Автор: ernie 16.11.2011, 9:28

Цитата(RazrFalcon @ 16.11.2011, 13:44) *
Да. Проверка в цикле.
Имелось ввиду то, что затратней: постоянная проверка или show().

А разницы между
if (count > 10)
и
if (count == 11)
в данном случае никакой.


Разница в том,что show() один раз вызовется только,при count==11 ,а не каждый раз :)

Автор: ilyabvt 16.11.2011, 12:56

Цитата
Имелось ввиду то, что затратней: постоянная проверка или show().

Постоянная проверка будет в любом случае. Вопрос был скорее лучше увеличить объем проверки (проверять две переменных вместо одной) или позволить каждый раз вызывать show().
Вариант ernie лучше тем что объем проверки остается тем же, но при этом show() будет вызываться только один раз.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)