Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: QDgara от Январь 14, 2010, 16:28



Название: QPainter && QThread, мучают сомнения.
Отправлено: 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, и потом его отрисовку знаю.


Название: Re: QPainter && QThread, мучают сомнения.
Отправлено: Dendy от Январь 14, 2010, 16:37
По прежнему нельзя.


Название: Re: QPainter && QThread, мучают сомнения.
Отправлено: Racheengel от Февраль 02, 2010, 15:11
вот только через QImage и можно.