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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QCheckBox програмное изменение состояния  (Прочитано 12658 раз)
fearn0t
Гость
« : Октябрь 15, 2009, 21:51 »

Всем привет! Возможно я туплю... но решения не придумал.

Код
C++ (Qt)
QObject::connect(pCheckBoxIPNoDHCP, SIGNAL(stateChanged(int)), this, SLOT(changeIPState(int)));
pCheckBoxIPNoDHCP->setCheckState(Qt::Checked);
 

Смысл такой, чтобы при запуске программы некоторые checkbox должны помечаться и соответственно должны производиться некоторые действия. Но похоже что сигнал statechanged не генерируется. =(((  Что почем?  =) как сделать чтобы он генерировался?
Записан
fearn0t
Гость
« Ответ #1 : Октябрь 15, 2009, 22:13 »

ой! я тупанул!  Смеющийся надо сигнал toggled()  использовать! Что-то я запарился... вроде заработало, а теперь снова не работает... надо спать, а то у меня уже глюки. Ниче не работает! подскажите!
« Последнее редактирование: Октябрь 15, 2009, 22:18 от fearn0t » Записан
reymon
Гость
« Ответ #2 : Октябрь 15, 2009, 23:40 »

Слушай, сделал тоже самое что и ты 1в1 - Все работает и с toggled()  и с stateChanged(int). QT 4.5 Windows
Записан
registrationfedser87
Гость
« Ответ #3 : Октябрь 16, 2009, 06:24 »

Как я понял из документации, этот сигнал испускается только когда пользователь изменил состояние (а если программно менять его то сигнала не будет)
Код
C++ (Qt)
void QCheckBox::stateChanged ( int state )   [signal]
This signal is emitted whenever the check box's state changes, i.e. whenever the user checks or unchecks it

Записан
uriel
Гость
« Ответ #4 : Октябрь 16, 2009, 07:47 »

Странно. Судя по исходникам, выдача сигнала происходит в функции setCheckState каждый раз когда новое состояние отличается от старого. То есть никакой привязки к действиями пользователя нет.
Записан
registrationfedser87
Гость
« Ответ #5 : Октябрь 16, 2009, 08:21 »

Действительно,ты прав. Видимо косяк в документации
Записан
fearn0t
Гость
« Ответ #6 : Октябрь 16, 2009, 08:22 »

Спасибо люди добрые =) поищу решение на свежую голову. Как  только найду - сообщу!
Записан
registrationfedser87
Гость
« Ответ #7 : Октябрь 16, 2009, 11:51 »

Если тебя интересует только два состояния-с галкой или без(а третье промежуточное состояние checkbox'а не интересует) то используй сигнал:
Код
C++ (Qt)
toggled ( bool checked )
а значение чекбоксам устанавливай методом:
Код
C++ (Qt)
void setChecked ( bool )
Записан
fearn0t
Гость
« Ответ #8 : Октябрь 16, 2009, 21:25 »

Проблема была в том, что этот слот взаимодействовал с несколькими сигналами и в нем сигналы друг на друга накладывались.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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