Russian Qt Forum
Ноябрь 25, 2024, 04:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: setEnabled(false) vs setDisabled(true)  (Прочитано 6638 раз)
codemonkey
Гость
« : Октябрь 23, 2013, 15:10 »

В большинстве компонентов Qt предусмотрено 2 способа.
Как вы выбираете какой из них использовать?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #1 : Октябрь 23, 2013, 15:26 »

У нас проходят внеочередные собрания по этому поводу.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #2 : Октябрь 23, 2013, 15:48 »

предлагаю также обсудить setVisible() с show()/hide()
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
codemonkey
Гость
« Ответ #3 : Октябрь 23, 2013, 16:24 »

предлагаю также обсудить setVisible() с show()/hide()

Очевидно, если можно писать setVisible надо так и писать, потому что это одна строка

Код
C++ (Qt)
bool b;
//....................
setVisible(b);
 
//вместо двух
 
if(b)show();
else hide();
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #4 : Октябрь 23, 2013, 17:26 »

ого, ты не бот?..

ну вот виджеты почему-то принято показывать через show() а не через setVisible(true)
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
codemonkey
Гость
« Ответ #5 : Октябрь 24, 2013, 08:13 »

виджеты почему-то принято показывать через show()

Принято значит написано в каком-то документе.
Где написано что надо показывать через show() и нельзя показывать через setVisible?
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #6 : Октябрь 24, 2013, 09:32 »

Зависит от того, что пишешь Улыбающийся

Например, при создании окон, мне кажется, удобнее использовать show:
Код:
int main( int argc, char **argv )
{
    QApplication app( argc, argv );

    QWidget w;
    w.show(); // коротко и лаконично

    return app.exec();
}


При передачи булевых переменных, удобнее setVisible:
Код:
QCheckBox * cBoxVisibleWindow = new QCheckBox();
cBoxVisibleWindow->show();

QWidget * window = new QWidget();
window->setVisible ( cBoxVisibleWindow->isChecked() );

connect( cBoxVisibleWindow, SIGNAL( toggled( bool ) ),
         window, SLOT( setVisible( bool ) ) );
Записан

kai666_73
Крякер
****
Offline Offline

Сообщений: 319


Просмотр профиля
« Ответ #7 : Октябрь 24, 2013, 10:47 »

А такой пример
Код:
connect(button, SYGNAL(toggled(bool)), yesWidget, SLOT(setEnabled(bool)));
connect(button, SYGNAL(toggled(bool)), notWidget, SLOT(setDisabled(bool)));
не подскажет в чем прелесть наличия обоих вариантов?
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #8 : Октябрь 24, 2013, 12:04 »

виджеты почему-то принято показывать через show()

Принято значит написано в каком-то документе.
Где написано что надо показывать через show() и нельзя показывать через setVisible?
ни в каком документе не написано, но в большинстве примерах используется именно show(). принято != обязательно.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.156 секунд. Запросов: 23.