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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QPainter && QThread, мучают сомнения.  (Прочитано 2861 раз)
QDgara
Гость
« : Январь 14, 2010, 16:28 »

Раньше  было так, что в своем потоке на виджет рисовать нельзя. Сейчас так же?
Накидал простецкий пример (сильно не пинать)
Код:
#include <QApplication>
#include <QWidget>
#include <QThread>
#include <QSemaphore>
#include <QLabel>
#include <QPainter>

class MainWidget : public QWidget
{
public:
  MainWidget(QWidget* parent = 0)
    :QWidget(parent)
  {
  }
  virtual ~MainWidget()
  {
  }
};

class QGThread : public QThread
{
  public:
    QGThread(QWidget* w)
    {
      pw = w;
    }
    void run()
    {
      QPainter p(pw);
      p.drawLine(0,0,100,100);
    }
  private:
   QWidget* pw;
};

int main(int argc, char* argv[])
{
  QApplication app(argc, argv);
  MainWidget mw;
  QGThread thread(&mw);
  mw.show();
  thread.start();
  return app.exec();
};

в output  выдало конечно:
Цитировать
QPainter::begin: Paint device returned engine == 0, type: 1

Развейте сомнения, сейчас по прежнему нельзя рисовать в виджете из другого потока? Или есть способ?
пс: про метод с рисованием в QImage, и потом его отрисовку знаю.
Записан
Dendy
Гость
« Ответ #1 : Январь 14, 2010, 16:37 »

По прежнему нельзя.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #2 : Февраль 02, 2010, 15:11 »

вот только через QImage и можно.
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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