Russian Qt Forum
Ноябрь 25, 2024, 10:31 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: почему ошибка в потоке?  (Прочитано 14003 раз)
CJ1
Гость
« : Октябрь 04, 2012, 13:29 »

Код
C++ (Qt)
#ifndef THEAD_H
#define THEAD_H
 
 
 
#include <QThread>
#include "progress_bar.h"
#include "mainwindow.h"
 
class XClientThread : public QThread
{
   Q_OBJECT
 
public:
   explicit XClientThread(QObject *parent=0);
   ~XClientThread();
   void run();
 
private:
   Progress_bar progress;
   MainWindow * mw;
   int i;
};
 
 
 
 
 
#endif // THEAD_H
 


Код
C++ (Qt)
#include "thead.h"
#include "mainwindow.h"
#include <QmessageBox>
#include <QDebug>
#include <QApplication>
#include "progress_bar.h"
#include "mainwindow.h"
 
XClientThread::XClientThread(QObject *parent) : QThread(parent)
{
   mw = (MainWindow*) parent;
 
   progress.show();
   start();
}
 
 
void XClientThread::run()
{
   i = 0;
   while (true)
   {
       mw->setWindowTitle(QString::number(i));
       i++;
   }
 
   exec();
}
 
XClientThread::~XClientThread(){
    progress.hide();
   exit();
   wait();
 
}
 


Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Октябрь 04, 2012, 13:33 »

Нельзя из потока работать с гуи.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
CJ1
Гость
« Ответ #2 : Октябрь 04, 2012, 13:38 »

Вообще без вариантов?
Записан
mutineer
Гость
« Ответ #3 : Октябрь 04, 2012, 13:42 »

Вообще без вариантов?
ага
Записан
CJ1
Гость
« Ответ #4 : Октябрь 04, 2012, 13:44 »

Тогда там вообще потоки не нужны, вот говно а
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Октябрь 04, 2012, 13:45 »

Вообще без вариантов?
Сигналы/слоты.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
mutineer
Гость
« Ответ #6 : Октябрь 04, 2012, 13:46 »

Тогда там вообще потоки не нужны, вот говно а

Почему не нужны? Запрос на обновление гуя можно выбросить в основной поток и выполнить в нем
Записан
CJ1
Гость
« Ответ #7 : Октябрь 04, 2012, 14:02 »

А как мне перенести экспорт QTableWidget в поток?
Записан
mutineer
Гость
« Ответ #8 : Октябрь 04, 2012, 14:02 »

Сделать через model/view
Записан
CJ1
Гость
« Ответ #9 : Октябрь 04, 2012, 14:09 »

Это как?Непонимающий?
Записан
mutineer
Гость
« Ответ #10 : Октябрь 04, 2012, 14:16 »

http://doc.crossplatform.ru/qt/4.7.x/model-view-programming.html
Записан
CJ1
Гость
« Ответ #11 : Октябрь 04, 2012, 14:18 »

уф... этого мне никогда не понять
Записан
mutineer
Гость
« Ответ #12 : Октябрь 04, 2012, 14:19 »

уф... этого мне никогда не понять

Ну если прочитать весь этот текст за 2 минуты, то конечно не понять - читать надо хоть немного медленнее и вдумчивее
Записан
CJ1
Гость
« Ответ #13 : Октябрь 04, 2012, 14:20 »

Ну я имею ввиду вобще не ясно как сделать прогрессбар в другом потоки и непонятно при чем тут  model/view
Хоть бы пример какой нибудь был
Записан
mutineer
Гость
« Ответ #14 : Октябрь 04, 2012, 14:24 »

Ну я имею ввиду вобще не ясно как сделать прогрессбар в другом потоки и непонятно при чем тут  model/view
Хоть бы пример какой нибудь был

model/view не к прогрессбару относится, а к "перенести экспорт QTableWidget в поток"

А прогрессбар должен быть в гуй-потоке, но обновляться он вполне может сигналами из другого потока
Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.266 секунд. Запросов: 23.