Название: Помогите разобраться с идеологией слотов-сигналов Отправлено: e-not от Сентябрь 16, 2010, 11:02 Здравствуйте. Пытаюсь освоить QT после многих лет Delphi.
Помогите, пожалуйста, разобраться с идеологией слотов-сигналов. Базовые моменты более-менее понятны, но как реализуется следующее: К примеру, на форме находятся кнопка, несколько выпадающих списков и надпись. Как сделать так, чтобы при нажатии кнопки в надписи выводилась строка типа "В списке 1 выбран элемент A, В списке 2 выбран элемент B ...", соответственно тому, что выбрано. Название: Re: Помогите разобраться с идеологией слотов-сигналов Отправлено: Alex_cs_gsp от Сентябрь 16, 2010, 11:06 Здравствуйте. Пытаюсь освоить QT после многих лет Delphi. А С++ пытались освоить?Вся идеология сводится к соединению сигналов и слотов. Пишите свой класс со своим слотом. Сигнал от кнопки clicked() соединяете с этим слотом. А в самом слоте забирайте из списка то, что там выделено и выводите куда нужно. Но, вообще то, список посылает сигнал, если было изменено выделение, так что кнопка будет лишней. Название: Re: Помогите разобраться с идеологией слотов-сигналов Отправлено: merke от Сентябрь 16, 2010, 12:17 Попытаюсь объяснить Вам. Слот представляет собой что то очень и очень похожее на функцию-член класса. Сам же сигнал он испускается при каком то определенном событии. Давайте сразу возьмем пример из жизни. Вы заходите в комнату там темно, вы нажимаете на включатель - включается лампочка. Теперь включатель - сигнал, а вы инициатор сигнала, лампочка - слот. Сигнал и слот в данном случае связан проводом. Лампочка включится только в том случае если будет нажат включатель.
связь в Qt осуществляется следующим образом Код: connect(объект_испускающий_сгнал,SIGNAL(имя_сигнала), класс_где_объявлен_слот, SLOT(имя_слота)); Один сигнал может быть связан с многим числом слотов, как например рубильник может подавать или отключать питание на сеть приборов. Сигнал - рубильник, слоты - приборы. Также множество сигналов могут быть связаны всего лишь с одним слотом. Сигналы и слоты, позволяют связывать совершенно разные объекты. Это очень удобный и тонкий механизм. Очень легок для понимания. Разберем ваш пример: Расположим QPushButton, QLabel, QListWidget. В конструкторе класса пишем connect(ui->button1, SIGNAL(clicked), this, SLOT(set_to_label())); Так получается мы тут связали событие нажатия кнопки с функцией set_to_label() В заголовочном файле класса декларируем слот: Код: private slots: Теперь при нажатии на кнопочку в лэйбле будет выведен текст текущего элемента в листвиджете. Название: Re: Помогите разобраться с идеологией слотов-сигналов Отправлено: e-not от Сентябрь 16, 2010, 12:54 Спасибо откликнувшимся! Теперь все понятно.
Название: Re: Помогите разобраться с идеологией слотов-сигналов Отправлено: merke от Сентябрь 16, 2010, 12:59 с тебя пивасик :D
|