crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

Гость_Гость_progmax_*_*
сообщение 24.2.2011, 23:17
Сообщение #1





Гости








    


Есть такой код:
void UserRegistrationDialog::CheckUserNameFree() 
{
    const QString UserNameCheckValue = ui.UserNameEdit->text();

    ((testtest*)qApp)->doUserNameCheckFree(UserNameCheckValue);
 
}
void UserRegistrationDialog::updateRegistrationForm()
{
   const bool is_LoginFree = ((testtest*)qApp)->isLoginFree();

    if(is_LoginFree)
    {
   
       ui.EmailEdit->setEnabled(true);
       
    }
    else
    {
     
       ui.EmailEdit->setEnabled(false)

    }

}


testtest - основное приложение где происходит запрос к базе.
doUserNameCheckFree - проверяет наличие логина в базе.
из приложения testtest вызывается userRegistrationDialog->updateRegistrationForm();
дабы обновить поля формы.
И нифига не работает!, точнее работает заходит в условие ставит ui.EmailEdit->setEnabled(false); НО форма НЕ перерисовывается, то-есть виджеты не обновляются.

прошу помощи, пробовал вызывать
ui.layoutWidget->update();
ui.layoutWidget->repaint();
не помогает.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Алексей1153
  опции профиля:
сообщение 3.3.2011, 19:49
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2944
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


abc, это потому что TYPE& по умолчанию и без проблем приводится к const TYPE&. С указателями так же

Если сильно придирчиво подойти к вопросу, то константный локальных или стековых переменных вообще не бывает, их содержимое можно легко поменять при надобности. Но необходимость этого - признак кривого проектирования (либо прям ваще суровая необходимость, пример чуть ниже приведу)

Если же переменная не должна поменяться, всегда делай её const. Просто на всякий случай :)

И тот самый пример (для винды, правда): имеется класс, одним из членов которого является объект критичесвкой секции. Также имеется константный метод (читаем что-либо из массива, инкапсулированного внутри класса). Вроде всё возможно, так как чтение не меняет массив. Но тут такая неприятность, что у объекта критической секции метод Lock неконстантный. Вот и придётся принудительно привести this к неконстантному типу, чтобы было возможно вызвать метод
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 3.3.2011, 20:06
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(Алексей1153 @ 3.3.2011, 19:49) *
И тот самый пример (для винды, правда): имеется класс, одним из членов которого является объект критичесвкой секции. Также имеется константный метод (читаем что-либо из массива, инкапсулированного внутри класса). Вроде всё возможно, так как чтение не меняет массив. Но тут такая неприятность, что у объекта критической секции метод Lock неконстантный. Вот и придётся принудительно привести this к неконстантному типу, чтобы было возможно вызвать метод

А почему для этого не воспользоваться модификатором mutable?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- Гость_progmax_*   Перерисовка формы   24.2.2011, 23:17
- - abc   не понял, что должно произойти с виджетами? в функ...   24.2.2011, 23:32
|- - Гость_progmax_*   Все разрешил сам , все как писал дядюшка Шлее)   24.2.2011, 23:41
- - abc   а зачем здесь const?   24.2.2011, 23:48
- - Алексей1153   abc, полезно, если не нужно случайно дальше по теч...   3.3.2011, 8:46
- - abc   я просто думаю, что конст для локальных переменных...   3.3.2011, 12:12
- - Litkevich Yuriy   Цитата(abc @ 3.3.2011, 14:12) я просто ду...   3.3.2011, 15:09
- - abc   Я читал, что оптимальный вариант передавать переме...   3.3.2011, 15:34
- - Алексей1153   abc, это потому что TYPE& по умолчанию и без п...   3.3.2011, 19:49
|- - BRE   Цитата(Алексей1153 @ 3.3.2011, 19:49) И т...   3.3.2011, 20:06
- - abc   Я не представляю на какой "всякий" случа...   3.3.2011, 20:25
- - Rocky   ЦитатаЯ не представляю на какой "всякий...   3.3.2011, 21:06
- - abc   да, но о локальных переменных особенно думать не н...   3.3.2011, 21:33
- - Алексей1153   BRE, о, кстати да, спасибо ) Я не знал про mutable...   4.3.2011, 8:26


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 22.7.2025, 21:47