Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
| Гость_Гость_progmax_*_* |
24.2.2011, 23:17
Сообщение
#1
|
|
Гости |
Есть такой код:
testtest - основное приложение где происходит запрос к базе. doUserNameCheckFree - проверяет наличие логина в базе. из приложения testtest вызывается userRegistrationDialog->updateRegistrationForm(); дабы обновить поля формы. И нифига не работает!, точнее работает заходит в условие ставит ui.EmailEdit->setEnabled(false); НО форма НЕ перерисовывается, то-есть виджеты не обновляются. прошу помощи, пробовал вызывать ui.layoutWidget->update(); ui.layoutWidget->repaint(); не помогает. |
|
|
|
|
abc |
24.2.2011, 23:32
Сообщение
#2
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 221 Регистрация: 16.12.2010 Из: СПб Пользователь №: 2272 Спасибо сказали: 26 раз(а) Репутация: 4
|
не понял, что должно произойти с виджетами? в функции вроде ничего и не написано
|
|
|
|
| Гость_Гость_progmax_*_* |
24.2.2011, 23:41
Сообщение
#3
|
|
Гости |
Все разрешил сам
|
|
|
|
|
abc |
24.2.2011, 23:48
Сообщение
#4
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 221 Регистрация: 16.12.2010 Из: СПб Пользователь №: 2272 Спасибо сказали: 26 раз(а) Репутация: 4
|
а зачем здесь const?
|
|
|
|
|
Алексей1153 |
3.3.2011, 8:46
Сообщение
#5
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34
|
abc, полезно, если не нужно случайно дальше по течению кода менять значение переменной - компилятор тыкнет носом )
|
|
|
|
|
abc |
3.3.2011, 12:12
Сообщение
#6
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 221 Регистрация: 16.12.2010 Из: СПб Пользователь №: 2272 Спасибо сказали: 26 раз(а) Репутация: 4
|
я просто думаю, что конст для локальных переменных без надобности
|
|
|
|
|
Litkevich Yuriy |
3.3.2011, 15:09
Сообщение
#7
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(abc @ 3.3.2011, 14:12) Link я просто думаю, что конст для локальных переменных без надобности В Си++, в основном они и используются. Они могут передаваться в разные методы, в том числе по ссылке изи указателю.Мало того компиллер многое может с оптимизировать, зная что это константная переменная. |
|
|
|
|
abc |
3.3.2011, 15:34
Сообщение
#8
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 221 Регистрация: 16.12.2010 Из: СПб Пользователь №: 2272 Спасибо сказали: 26 раз(а) Репутация: 4
|
Я читал, что оптимальный вариант передавать переменную в функцию так, если не хочется изменять:
func(const int& x) - объявили и с этой функцией уже можно спокойно работать так: { int y; func(y); } В этом случае по логике программы не нужно у объявлять константной. Или компилятору и в этой ситуации было бы лучше, чтобы она была константной? Сообщение отредактировал abc - 3.3.2011, 15:39 |
|
|
|
|
Алексей1153 |
3.3.2011, 19:49
Сообщение
#9
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34
|
abc, это потому что TYPE& по умолчанию и без проблем приводится к const TYPE&. С указателями так же
Если сильно придирчиво подойти к вопросу, то константный локальных или стековых переменных вообще не бывает, их содержимое можно легко поменять при надобности. Но необходимость этого - признак кривого проектирования (либо прям ваще суровая необходимость, пример чуть ниже приведу) Если же переменная не должна поменяться, всегда делай её const. Просто на всякий случай И тот самый пример (для винды, правда): имеется класс, одним из членов которого является объект критичесвкой секции. Также имеется константный метод (читаем что-либо из массива, инкапсулированного внутри класса). Вроде всё возможно, так как чтение не меняет массив. Но тут такая неприятность, что у объекта критической секции метод Lock неконстантный. Вот и придётся принудительно привести this к неконстантному типу, чтобы было возможно вызвать метод |
|
|
|
|
BRE |
3.3.2011, 20:06
Сообщение
#10
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44
|
Цитата(Алексей1153 @ 3.3.2011, 19:49) Link И тот самый пример (для винды, правда): имеется класс, одним из членов которого является объект критичесвкой секции. Также имеется константный метод (читаем что-либо из массива, инкапсулированного внутри класса). Вроде всё возможно, так как чтение не меняет массив. Но тут такая неприятность, что у объекта критической секции метод Lock неконстантный. Вот и придётся принудительно привести this к неконстантному типу, чтобы было возможно вызвать метод А почему для этого не воспользоваться модификатором mutable? |
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 29.12.2025, 8:35 |