Здравствуйте, гость ( Вход | Регистрация )
|
franza |
9.1.2011, 21:02
Сообщение
#1
|
|
Новичок Группа: Новичок Сообщений: 8 Регистрация: 3.1.2011 Пользователь №: 2323 Спасибо сказали: 0 раз(а) Репутация: 0
|
Я начинающий в Qt. Разбираюсь с многопоточностью и не могу написать код, который одновременно менял значение QLCDNumber и постоянно нажимает кнопочку. Прошу помочь разобраться.
lcdthread.h pbthread.h lcdthread.cpp pbthread.cpp main.cpp Не могу сделать так, чтобы родительский виджет был доступен для перетаскиваний и прочего. Или для него надо писать свой поток? |
|
|
|
![]() |
|
Litkevich Yuriy |
10.1.2011, 19:13
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
Цитата(franza @ 10.1.2011, 18:47) Link я имею ввиду, что этот отдельный поток, где создаются виджеты и есть главный. лучше главный поток и называть главным, чтобы никого столку не сбивать.Цитата(franza @ 10.1.2011, 20:28) Link 3 виджета (лсд, кнопка, и базовый, куда они помещаются) создаются в main.cpp. При этом они создаются в главном потоке или нет? Да. Всё что не является наследником QThread и не использует moveToThread() находится в главном потоке.Цитата(Litkevich Yuriy @ 10.1.2011, 20:45) Link Всё что не является наследником QThread если быть более точным, то - сам наследник QThread создаётся в главном потоке, а затем вызывается его метод start(), который, в свою очередь, вызывает метод run(). Дак вот именно метод run() и выполняется в отдельном потоке, и как следствие, все объекты созданные в методе run() находятся в отдельном потоке.Цитата(franza @ 10.1.2011, 20:28) Link Слоты, к которым происходит коннект вызываются в главном потоке или нет? Слоты находятся в том потоке, в котором находится их объект. Если у тебя все виджеты в главном потоке, то и их слоты соответственно тоже в главном потоке, но это справедливо для соединений типа "авто" (по умолчанию) и "в очередь"(queued).Цитата(ufna @ 10.1.2011, 4:15) Link А здесь я не уверен насчет сигналов до exec() в потоке. Собственноручно посылать сигнал можно, а вот, например, сигнал от таймера (созданного здесь же) уже посылаться не будет, т.к. локальная очередь событий не запущена и в таймере не произойдёт события "таймаут"Ну а вообще: Цитата(ufna @ 10.1.2011, 1:59) Link ... виджеты живут в основном потоке, но если они получают неприрывный поток сигналов, они это отрабатывают и не дают возможности сигналам и событиям перемещения прийти. +100
|
|
|
|
franza Помогите разобаться с потоками. 9.1.2011, 21:02
Litkevich Yuriy виджеты могут находится только в главном потоке. Н... 9.1.2011, 22:02
franza виджеты создаются в главном потоке (по крайней мер... 9.1.2011, 22:41
Litkevich Yuriy Цитата(franza @ 10.1.2011, 0:41) о при вы... 9.1.2011, 23:41
ufna Чет мне подсказывает, что закидывать в while() соо... 9.1.2011, 23:59
franza ufna, то есть, в принципе, написано все правильно... 10.1.2011, 0:23
ufna Вообще по-хорошему не так делается Можно сделать ... 10.1.2011, 2:15
franza ufna, можно поподробней?
Litkevich Yuriy, я имею ... 10.1.2011, 16:47
Litkevich Yuriy franza, ту по-русски вообще понимаешь? 10.1.2011, 17:35
franza Litkevich Yuriy, понимаю. Можешь попробовать расс... 10.1.2011, 18:28
franza спасибо, вроде разобрался. напишу еще, если появят... 10.1.2011, 19:24![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 11.3.2026, 0:49 |