![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
karabura |
![]()
Сообщение
#1
|
Студент ![]() Группа: Новичок Сообщений: 16 Регистрация: 23.6.2009 Пользователь №: 843 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Проблема не оригинальная, следующая (я здесь нашёл в FAQ такую тему - но мне не подошло, она здесь для QT4):
Имеется главный поток, в виде формочки, на которой должна отображаться быстро меняющаяся информация, и поток, который собственно эту информацию и достаёт (в бесконечном цикле). Главная форма нужна, дабы управлять потоком. А поток обновляет информацию на главной формочке. Я попробовал вот так: http://www.forum.crossplatform.ru/index.ph...%E6%E5%ED%E8%E5 не получилось, понятно, что вряд ли от QT4 получится в QT3. Дайте пожалуйста ссылку, как проще это сделать в QT3 (или пример по существу). |
|
|
![]() |
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
SABROG |
![]()
Сообщение
#3
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
karabura, а в Qt 3 нет сигналов и слотов или потоков или ты не знаешь как сделать emit сигнала в поток? Я вообще не понял в чем у тебя проблема.
|
|
|
karabura |
![]()
Сообщение
#4
|
Студент ![]() Группа: Новичок Сообщений: 16 Регистрация: 23.6.2009 Пользователь №: 843 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
объявление класса потока - в отдельном h файле,
реализация в другом. Теперь суть главной формы (пришлось залезть в файл .ui/frmMain.h): в классе Form1
В конструкторе главной формы:
компилятор выдаёт по русски: .ui/frmMain.cpp: In constructor ‘Form1::Form1(QWidget*, const char*, uint)’: .ui/frmMain.cpp:187: ошибка: нет подходящей функции для вызова ‘Form1::connect(MThread**, const char [16], Form1* const, const char [15])’ /usr/lib/qt/include/qobject.h:116: замечание: претенденты: static bool QObject::connect(const QObject*, const char*, const QObject*, const char*) /usr/lib/qt/include/qobject.h:226: замечание: bool QObject::connect(const QObject*, const char*, const char*) const
Причина редактирования: используй тэг code
|
|
|
Kagami |
![]()
Сообщение
#5
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 601 Регистрация: 2.2.2009 Пользователь №: 523 Спасибо сказали: 101 раз(а) Репутация: ![]() ![]() ![]() |
Цитата connect(&mthread, SIGNAL( sendWL(char *) ), this, SLOT( setWL(char *) )) Зачем ты берешь адрес от указателя? Сообщение отредактировал Kagami - 23.6.2009, 12:07 |
|
|
karabura |
![]()
Сообщение
#6
|
Студент ![]() Группа: Новичок Сообщений: 16 Регистрация: 23.6.2009 Пользователь №: 843 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
SABROG |
![]()
Сообщение
#7
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Цитата но тем не менее характер ошибки не меняется Как он может не поменяться, когда ошибка явно указывает на двойной указатель?:
Когда вторым объектом в connect является this указатель - его можно опустить:
Кстати твой слот отработает в основном цикле, а не в потоке. Спроси меня почему. Сообщение отредактировал SABROG - 23.6.2009, 12:30 |
|
|
karabura |
![]()
Сообщение
#8
|
Студент ![]() Группа: Новичок Сообщений: 16 Регистрация: 23.6.2009 Пользователь №: 843 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
SABROG |
![]()
Сообщение
#9
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
karabura |
![]()
Сообщение
#10
|
Студент ![]() Группа: Новичок Сообщений: 16 Регистрация: 23.6.2009 Пользователь №: 843 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
убрал ссылку из connect:
connect(mthread, SIGNAL( sendWL(char *), SLOT( setWL(char *) ) ); всё равно вот это выдаётся компилятором: .ui/frmMain.cpp: In constructor ‘Form1::Form1(QWidget*, const char*, uint)’: .ui/frmMain.cpp:187: ошибка: нет подходящей функции для вызова ‘Form1::connect(MThread*&, const char [16], const char [15])’ /usr/lib/qt/include/qobject.h:116: замечание: претенденты: static bool QObject::connect(const QObject*, const char*, const QObject*, const char*) connect(mthread, SIGNAL( sendWL(char *), SLOT( setWL(char *) ) ); atic bool QObject::connect(const QObject*, const char*, const QObject*, const char*) скобку в пост забыл, в исходниках она есть |
|
|
SABROG |
![]()
Сообщение
#11
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Покажи объявление mthread.
Ссылка на указатель. Это у тебя не так mthread объявлен?
|
|
|
karabura |
![]()
Сообщение
#12
|
Студент ![]() Группа: Новичок Сообщений: 16 Регистрация: 23.6.2009 Пользователь №: 843 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Покажи объявление mthread.
Ссылка на указатель. Это у тебя не так mthread объявлен?
Объявлен в классе основной формы: MThread *mthread; А в конструкторе формы я его создаю, перед коннектом mthread=new MThread(); ... connect(mthread, SIGNAL( sendWL(char *) ), SLOT( setWL(char *) ) ); ... |
|
|
SABROG |
![]()
Сообщение
#13
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Выложи тут в архиве исходники.
|
|
|
karabura |
![]()
Сообщение
#14
|
Студент ![]() Группа: Новичок Сообщений: 16 Регистрация: 23.6.2009 Пользователь №: 843 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
SABROG |
![]()
Сообщение
#15
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
karabura |
![]()
Сообщение
#16
|
Студент ![]() Группа: Новичок Сообщений: 16 Регистрация: 23.6.2009 Пользователь №: 843 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Не получилось сразу загрузить[attachment=678:qtdesigner_copy.tar.gz]
Если ты в Qt впервые, то зачем ты выбрал такую старую её версию? А я и не выбирал, она у меня по дефолту стояла, разве она не работоспособная? Я не совсем просто понимаю, чем она в контексте простейшей задачи хуже QT4?
Прикрепленные файлы
|
|
|
SABROG |
![]()
Сообщение
#17
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
Файл frmMain.h, видишь что там написано:
Если ты сделаешь make clean && make distclean && qmake && make, то твои изменения все потеряются. Тебе надо выносить класс в отдельный модуль. Косяк скорее всего в том, что какая-то часть была изменена, а при компиляции эти изменения не видны. Нужно перекомпилить все приложение. А вообще лучше переходи на Qt 4. Сообщение отредактировал SABROG - 23.6.2009, 13:33 |
|
|
karabura |
![]()
Сообщение
#18
|
Студент ![]() Группа: Новичок Сообщений: 16 Регистрация: 23.6.2009 Пользователь №: 843 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Файл frmMain.h, видишь что там написано:
Если ты сделаешь make clean && make distclean && qmake && make, то твои изменения все потеряются. Тебе надо выносить класс в отдельный модуль. Косяк скорее всего в том, что какая-то часть была изменена, а при компиляции эти изменения не видны. Нужно перекомпилить все приложение. А вообще лучше переходи на Qt 4. Да, конечно я читал - и именно поэтому не делал qmake. Но я предполагал - что обычный make в этом случае отследит изменения (как это ему и положено). Спасибо за ответ, я попробую вынести в отдельный модель, ясно - что переходить на 4 придётся в последствии. Но я не смог в QT Creator - е его средствами создать свою функцию-слот (как в designer) - и это мне не очень понравилось. Хотя скорее всего нужно тщательно изучать матчасть ![]() |
|
|
Гость_pastor_* |
![]()
Сообщение
#19
|
Гости ![]() |
QThread в Qt3 не является наследником QObject, поэтому и возникает ошибка компиляции при
(ругается на первый параметр) Для реализации сигналов слотов в QThread (Qt3) нужно прибегнуть к двойному наследованию
|
|
|
SABROG |
![]()
Сообщение
#20
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: ![]() ![]() ![]() |
От оно чё михалыч! Значит я правильно говорю, надо на Qt 4 пересаживаться
![]() |
|
|
igor_bogomolov |
![]()
Сообщение
#21
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
Дайте пожалуйста ссылку, как проще это сделать в QT3 В тройке для этих целей используются события: QCustomEvent и QCoreApplication::postEventпочитать можно здесь: http://www.prog.org.ru/index.php?topic=809...g43192#msg43192 http://www.prog.org.ru/index.php?topic=891...g50072#msg50072 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#22
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Я не совсем просто понимаю, чем она в контексте простейшей задачи хуже QT4? Они существенно отличаются. В общем случае эти две версии несовместимы. В 4-ке появилось много полезных возможностей. Большенство людей работают в 4-ке, и могут полноценно подсказать только по ней. 3-ку проблемно скомпилировать под виндовоз, с бесплатными версиям напряг. |
|
|
karabura |
![]()
Сообщение
#23
|
Студент ![]() Группа: Новичок Сообщений: 16 Регистрация: 23.6.2009 Пользователь №: 843 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
QThread в Qt3 не является наследником QObject, поэтому и возникает ошибка компиляции при
(ругается на первый параметр) Для реализации сигналов слотов в QThread (Qt3) нужно прибегнуть к двойному наследованию
Очень ценно! Спасибо большое! Вчера пересел за 4, всё заработало. Но всё равно под третьим запущу! |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 23.6.2025, 1:20 |