crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Перерисовка формы, Порошу помощи.
Гость_Гость_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();
не помогает.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
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


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

Группа: Участник
Сообщений: 2939
Регистрация: 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) *
я просто думаю, что конст для локальных переменных без надобности
В Си++, в основном они и используются. Они могут передаваться в разные методы, в том числе по ссылке изи указателю.
Мало того компиллер многое может с оптимизировать, зная что это константная переменная.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
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


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

Группа: Участник
Сообщений: 2939
Регистрация: 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) *
И тот самый пример (для винды, правда): имеется класс, одним из членов которого является объект критичесвкой секции. Также имеется константный метод (читаем что-либо из массива, инкапсулированного внутри класса). Вроде всё возможно, так как чтение не меняет массив. Но тут такая неприятность, что у объекта критической секции метод Lock неконстантный. Вот и придётся принудительно привести this к неконстантному типу, чтобы было возможно вызвать метод

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

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


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




RSS Текстовая версия Сейчас: 16.4.2024, 14:12