Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Взаимодействие с главным потоком 
V
    Опции темы
andrew_121
Дата 30.8.2009, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



Заархивируй проект и выложи на http://rghost.ru/


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
RobRoj7779
Дата 30.8.2009, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 13.7.2009

Репутация: нет
Всего: нет



Код

int main(int argc, char ** argv)
{
    QApplication app( argc, argv );
    MainWindowImpl win;
    MyPotok *threadA;
    QLabel *lbInfo_masAHex;
    QLabel *lbInfo_masBHex;
    win.show(); 
    app.connect(threadA, SIGNAL(currentValueA(const QString&)),
                     lbInfo_masAHex, SLOT(setText(const QString&)));
    app.connect(threadA, SIGNAL(currentValueV(const QString&)),
                     lbInfo_masBHex, SLOT(setText(const QString&)));
    app.connect(&app, SIGNAL(getSendPak(bool)),
                     threadA, SLOT(run()));
    app.connect( &app, SIGNAL( lastWindowClosed() ), &app, SLOT( quit() ) );
    return app.exec();
}



Теперь я ничего не вижу
PM MAIL   Вверх
andrew_121
Дата 30.8.2009, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



Цитата(RobRoj7779 @  30.8.2009,  21:28 Найти цитируемый пост)
    MyPotok *threadA;
    QLabel *lbInfo_masAHex;
    QLabel *lbInfo_masBHex;

Где ты инициализируешь эти переменные?

п.с.
рано тебе программировать.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
RobRoj7779
Дата 30.8.2009, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 13.7.2009

Репутация: нет
Всего: нет



Выложил http://rghost.ru/429772
В архиве бинарник, Так должно быть. Писал как QDialog. А так же папка с проектом, который нужно исправить по подобию бинарника.
Прога создает в корне лог, в нем процесс правильный, строки динамически изменяются, но их я не вижу на форме.

Добавлено через 5 минут и 47 секунд
п.с.
рано тебе программировать.

Все так безнадежно................ Учусь. По этому и обратился за помощью.
Не привык опускать весла. Может быть выплыву с Вашей помощью. Помогите пожалуйста.

Добавлено через 12 минут и 15 секунд
А где нужно объявить??? В class MainWindowImpl.
При компиляции не находил соединения. 
Пишу в Mandriva 2009
PM MAIL   Вверх
RobRoj7779
Дата 31.8.2009, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 13.7.2009

Репутация: нет
Всего: нет



Здравствуйте, 
Задачу решил. Ошибка тупая, но стоила мне 2-х дней.
Большое спасибо. Еще раз извиняюсь за глупые вопросы. Но я учусь, а спецов по QT найти тяжело 
для того, чтобы пообщаться в живую.
Большое спасибо. И Еще раз извиняюсь.
PM MAIL   Вверх
andrew_121
Дата 31.8.2009, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 11
Всего: 33



RobRoj7779, Расскажи как решил.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
RobRoj7779
Дата 31.8.2009, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 13.7.2009

Репутация: нет
Всего: нет



    MyPotok *threadA;
    QLabel *lbInfo_masAHex;
    QLabel *lbInfo_masBHex;

Глупо, но переменные были определены не в том месте. Сравнил с проектом QDialog. Понял что не прав. Исправил. Заработало. 
Спасибо за помощь.
PM MAIL   Вверх
null56
Дата 31.8.2009, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 721
Регистрация: 19.3.2008

Репутация: 6
Всего: 12



не хочу тебя огорчать... может и я невнимательный в коде... .но мне кажется, что дочерний поток у тебя не создается, а просто идет вызов функции run(), что само по себе подразумевает выполнение в текущем потоке....
Вопрос: ты где - нибудь вызываешь функцию start() или нет? (может я слепой?)
Код

void QThread::run ()   [virtual protected]

//The starting point for the thread. After calling start(), the newly created thread calls this function. The default implementation simply calls exec().

//You can reimplemented this function to do other useful work. Returning from this method will end the execution of the thread.


Код

void QThread::start ( Priority priority = InheritPriority )   [slot]

Begins execution of the thread by calling run(), which should be reimplemented in a QThread subclass to contain your code. The operating system will schedule the thread according to the priority parameter. If the thread is already running, this function does nothing.

или я не прав? на сколько мне было известно, новый поток создается ТОЛЬКО после вызова функции start(), которая запускает новый поток с кодом, который описан в функции run()...
Код

//To create a thread, subclass QThread and reimplement its run() function. For example:

 class MyThread : public QThread
 {
     Q_OBJECT

 protected:
     void run();
 };

 void MyThread::run()
 {
     ...
 }
/*Then, create an instance of the thread object and call QThread::start(). The code that appears in the run() reimplementation will then be executed in a separate thread. Creating threads is explained in more detail in the QThread documentation.*/

PM MAIL   Вверх
RobRoj7779
Дата 1.9.2009, 05:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 13.7.2009

Репутация: нет
Всего: нет



Здравствуйте, вызов start() в кнопке "Старт"
Код

MainWindowImpl::MainWindowImpl( QWidget * parent, Qt::WFlags f) 
    : QMainWindow(parent, f)
{
    setupUi(this);
    QMainWindow::connect(&threadA, SIGNAL(currentValueA(const QString&)),
                     lbInfo_masAHex, SLOT(setText(const QString&)));
    QMainWindow::connect(&threadA, SIGNAL(currentValueV(const QString&)),
                     lbInfo_masBHex, SLOT(setText(const QString&)));
    QMainWindow::connect(this, SIGNAL(getSendPak(bool)),
                    &threadA, SLOT(run()));
    QLabel lbInfo_masAHex;
    QLabel lbInfo_masBHex;
}
// Кнопка "Старт"
void MainWindowImpl::startThread()
{
    QString Ln1;
    threadA.start();
    Ln1 = QString::fromLocal8Bit("Запущен поток");
    lbInfo_masA->setText(Ln1);
    if(!threadA.myValue){
        Ln1 = QString::fromLocal8Bit("Передано значение");
        lbInfo_masB->setText(Ln1);
    }
}
//Кнопка "Стоп"
void MainWindowImpl::stopThread()
{
    QString Ln;
    threadA.stop();
    Ln = QString::fromLocal8Bit("Остановлен поток");
    lbInfo_masA->setText(Ln);
    Ln = QString::fromLocal8Bit("Значения нет");
    lbInfo_masB->setText(Ln);
}

PM MAIL   Вверх
null56
Дата 1.9.2009, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 721
Регистрация: 19.3.2008

Репутация: 6
Всего: 12



RobRoj7779, да проспал... но тогда мне непонятно... зачем это
Код

QMainWindow::connect(this, SIGNAL(getSendPak(bool)), &threadA, SLOT(run()));

PM MAIL   Вверх
RobRoj7779
Дата 1.9.2009, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 13.7.2009

Репутация: нет
Всего: нет



Код

QMainWindow::connect(this, SIGNAL(getSendPak(bool)), &threadA, SLOT(run()));


Программка была тестовой. Хотел научиться работать с потоком. В частности возможность пересылки другой строки, в тот момент, когда поток запущен и обрабатывает основную строку. SIGNAL(getSendPak(bool)) формирует другую строку и передает ее потоку, который в этот момент уже запущен. А в целом все эти тестовые задачи подчинены одной. Написать что-то на подобии своего униикального программатора для Устройства через COM порт. Программатор должен иметь графическую оболочку, работать в среде Linux. Ранее задавал вопросы по интерфейсу и с помощью Форума его своял. Теперь команды. Работа с буфером COM порта почти отлажена. Если споткнусь, то надеюсь на помощь форума. 
Ранее писал на Delphi. Пришлось переквалифицироваться, т.е. учиться по новой. Поэтому еще раз СПАСИБО и надеюсь на Вашу поддержку.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0876 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.