crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в потоки и сигналы (QT3.3.8)
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
karabura Дата 24.6.2009, 9:07
 
Цитата(pastor @ 23.6.2009, 17:11) *
QThread в Qt3 не является наследником QObject, поэтому и возникает ошибка компиляции при

connect(mthread, SIGNAL( sendWL(char *) ), SLOT( setWL(char *) ) );


(ругается на первый параметр)

Для реализации сигналов слотов в QThread (Qt3) нужно прибегнуть к двойному наследованию

class MThread : public QThread, public QObject
{
    Q_OBJECT
....
};

Очень ценно! Спасибо большое!
Вчера пересел за 4, всё заработало. Но всё равно под третьим запущу!
Litkevich Yuriy Дата 23.6.2009, 20:16
 
Цитата(karabura @ 23.6.2009, 17:14) *
Я не совсем просто понимаю, чем она в контексте простейшей задачи хуже QT4?

Они существенно отличаются.
В общем случае эти две версии несовместимы.
В 4-ке появилось много полезных возможностей.
Большенство людей работают в 4-ке, и могут полноценно подсказать только по ней.
3-ку проблемно скомпилировать под виндовоз, с бесплатными версиям напряг.
igor_bogomolov Дата 23.6.2009, 17:18
 
Цитата(karabura @ 23.6.2009, 11:21) *
Дайте пожалуйста ссылку, как проще это сделать в 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
SABROG Дата 23.6.2009, 14:14
  От оно чё михалыч! Значит я правильно говорю, надо на Qt 4 пересаживаться :rolleyes:
pastor Дата 23.6.2009, 14:11
  QThread в Qt3 не является наследником QObject, поэтому и возникает ошибка компиляции при

connect(mthread, SIGNAL( sendWL(char *) ), SLOT( setWL(char *) ) );


(ругается на первый параметр)

Для реализации сигналов слотов в QThread (Qt3) нужно прибегнуть к двойному наследованию

class MThread : public QThread, public QObject
{
    Q_OBJECT
....
};
karabura Дата 23.6.2009, 13:38
 
Цитата(SABROG @ 23.6.2009, 16:31) *
Файл frmMain.h, видишь что там написано:

/****************************************************************************
** Form interface generated from reading ui file 'frmMain.ui'
**
** Created: Втр Р˜СЋРЅ 23 10:20:35 2009
**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
**
** WARNING! All changes made in this file will be lost!
****************************************************************************/
...
class Form1 : public QMainWindow
{
    Q_OBJECT
    
    MThread *mthread;
public:
    Form1( QWidget* parent = 0, const char* name = 0, WFlags fl = WType_TopLevel );
    ~Form1();


Если ты сделаешь make clean && make distclean && qmake && make, то твои изменения все потеряются. Тебе надо выносить класс в отдельный модуль. Косяк скорее всего в том, что какая-то часть была изменена, а при компиляции эти изменения не видны. Нужно перекомпилить все приложение.

А вообще лучше переходи на Qt 4.

Да, конечно я читал - и именно поэтому не делал qmake. Но я предполагал - что обычный make в этом случае отследит изменения (как это ему и положено).
Спасибо за ответ, я попробую вынести в отдельный модель, ясно - что переходить на 4 придётся в последствии.
Но я не смог в QT Creator - е его средствами создать свою функцию-слот (как в designer) - и это мне не очень понравилось. Хотя скорее всего нужно тщательно изучать матчасть :)
SABROG Дата 23.6.2009, 13:31
  Файл frmMain.h, видишь что там написано:

/****************************************************************************
** Form interface generated from reading ui file 'frmMain.ui'
**
** Created: Втр Р˜СЋРЅ 23 10:20:35 2009
**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
**
** WARNING! All changes made in this file will be lost!
****************************************************************************/
...
class Form1 : public QMainWindow
{
    Q_OBJECT
    
    MThread *mthread;
public:
    Form1( QWidget* parent = 0, const char* name = 0, WFlags fl = WType_TopLevel );
    ~Form1();


Если ты сделаешь make clean && make distclean && qmake && make, то твои изменения все потеряются. Тебе надо выносить класс в отдельный модуль. Косяк скорее всего в том, что какая-то часть была изменена, а при компиляции эти изменения не видны. Нужно перекомпилить все приложение.

А вообще лучше переходи на Qt 4.
karabura Дата 23.6.2009, 13:14
  Не получилось сразу загрузить[attachment=678:qtdesigner_copy.tar.gz]

Цитата(SABROG @ 23.6.2009, 16:11) *
Если ты в Qt впервые, то зачем ты выбрал такую старую её версию?
А я и не выбирал, она у меня по дефолту стояла, разве она не работоспособная? Я не совсем просто понимаю, чем она в контексте простейшей задачи хуже QT4?
SABROG Дата 23.6.2009, 13:11
 
Цитата(karabura @ 23.6.2009, 14:09) *
Прошу не издеваться над "сырым кодом"


Если ты в Qt впервые, то зачем ты выбрал такую старую её версию? Издеваться никто не будет, а если будут, то тебе только на пользу, будешь знать как надо делать правильно ;)
karabura Дата 23.6.2009, 13:09
 
Цитата(SABROG @ 23.6.2009, 16:01) *
Выложи тут в архиве исходники.

Там правда не всё, одного заголовочника нет - но это к сути отношения не имеет.
Прошу не издеваться над "сырым кодом" :) - я в QT впервые
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 6.7.2025, 2:13