Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: fearn0t от Октябрь 15, 2009, 21:51



Название: QCheckBox програмное изменение состояния
Отправлено: fearn0t от Октябрь 15, 2009, 21:51
Всем привет! Возможно я туплю... но решения не придумал.

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

Смысл такой, чтобы при запуске программы некоторые checkbox должны помечаться и соответственно должны производиться некоторые действия. Но похоже что сигнал statechanged не генерируется. =(((  Что почем?  =) как сделать чтобы он генерировался?


Название: Re: QCheckBox програмное изменение состояния
Отправлено: fearn0t от Октябрь 15, 2009, 22:13
ой! я тупанул!  ;D надо сигнал toggled()  использовать! Что-то я запарился... вроде заработало, а теперь снова не работает... надо спать, а то у меня уже глюки. Ниче не работает! подскажите!


Название: Re: QCheckBox програмное изменение состояния
Отправлено: reymon от Октябрь 15, 2009, 23:40
Слушай, сделал тоже самое что и ты 1в1 - Все работает и с toggled()  и с stateChanged(int). QT 4.5 Windows


Название: Re: QCheckBox програмное изменение состояния
Отправлено: registrationfedser87 от Октябрь 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



Название: Re: QCheckBox програмное изменение состояния
Отправлено: uriel от Октябрь 16, 2009, 07:47
Странно. Судя по исходникам, выдача сигнала происходит в функции setCheckState каждый раз когда новое состояние отличается от старого. То есть никакой привязки к действиями пользователя нет.


Название: Re: QCheckBox програмное изменение состояния
Отправлено: registrationfedser87 от Октябрь 16, 2009, 08:21
Действительно,ты прав. Видимо косяк в документации


Название: Re: QCheckBox програмное изменение состояния
Отправлено: fearn0t от Октябрь 16, 2009, 08:22
Спасибо люди добрые =) поищу решение на свежую голову. Как  только найду - сообщу!


Название: Re: QCheckBox програмное изменение состояния
Отправлено: registrationfedser87 от Октябрь 16, 2009, 11:51
Если тебя интересует только два состояния-с галкой или без(а третье промежуточное состояние checkbox'а не интересует) то используй сигнал:
Код
C++ (Qt)
toggled ( bool checked )
а значение чекбоксам устанавливай методом:
Код
C++ (Qt)
void setChecked ( bool )


Название: Re: QCheckBox програмное изменение состояния
Отправлено: fearn0t от Октябрь 16, 2009, 21:25
Проблема была в том, что этот слот взаимодействовал с несколькими сигналами и в нем сигналы друг на друга накладывались.