Название: падает прога... Отправлено: sja от Январь 24, 2008, 22:51 qt4, linux.
у меня создается qthread, в котором я хочу обновлять параметры виджетов. значения label яменяю через сигнал setLabel, а как выставлять у него и groupBoxалитру? если я просто вызываю groupBox->setPalette программа иногда (именно иногда - я не могу понять в какой момент!!!) когда убираю эти вызовы - всё норм... сначала, когда вызывал не через сигнал установку текста лабеля - падало всегда... как быть с палитрой? Название: Re: падает прога... Отправлено: pastor от Январь 24, 2008, 23:11 Вы напрямую обращаетесь к виджетам из другого потока? Покажите код, чтобы не гадать
Название: Re: падает прога... Отправлено: sja от Январь 24, 2008, 23:52 Да,напрямую.
label & groupbox находятся в другом потоке, в главном. label->setPalette(Palette); groupBox->setPalette(Palette); я понимаю, что это неверно,а как сделать корректно? Название: Re: падает прога... Отправлено: pastor от Январь 25, 2008, 00:26 Так делать нельзя!
1) Можно использовать сигналы\слоты 2) Можно использовать эвенты Поиск по форуму рулит: http://prog.org.ru/forum/index.php/topic,6203.0.html http://prog.org.ru/forum/index.php/topic,6598.0.html http://prog.org.ru/forum/index.php/topic,6667.0.html Название: Re: падает прога... Отправлено: sja от Январь 25, 2008, 10:06 какой слот виджета можно задействовать для выставления новой палитры, если такого слота нет, а слот setLabel есть?
как из потока сгенерировать событие, если только у QApplication есть sendEvent? может быть в гуевом классе создать слот, который будет напрямую обращаться к своему лабелю для выставления палитры и вызывать из моего потока сигналом?... Название: Re: падает прога... Отправлено: Mikhail от Январь 25, 2008, 12:14 какой слот виджета можно задействовать для выставления новой палитры, если такого слота нет, а слот setLabel есть? как из потока сгенерировать событие, если только у QApplication есть sendEvent? может быть в гуевом классе создать слот, который будет напрямую обращаться к своему лабелю для выставления палитры и вызывать из моего потока сигналом?... В потоке формируешь event, а затем: QApplication::postEvent(TargetWidget, event); TargetWidget принимает сигнал в TargetWidget::customEvent(QEvent *event), в котором можно проводить всю необходимую обработку |