The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Как сграбить содержимое QWidget?"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Как сграбить содержимое QWidget?"
Сообщение от vshekun emailИскать по авторуВ закладки on 23-Апр-03, 16:04  (MSK)
Сабж. Пытаюсь grabWidget'ом, что в в QPixmap, но ничего не получается. :(

пишу что-то типа:

widget -- указатель на родительский класс QWidget,на кот. я рисую свой класс QWidget.

QPixmap pixmap;
pixmap.grabWidget( widget );

Код компилируется,но процесс завершается с ошибками. :((

Ничего более подходящего не нашел. Подсобите советом.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Как сграбить содержимое QWidget?"
Сообщение от XMan Искать по авторуВ закладки on 23-Апр-03, 19:41  (MSK)
А что делает:

QPixmap pixmap=QPixmap::grabWidget(widget);

?

PS. grabWidget - статический метод

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Как сграбить содержимое QWidget?"
Сообщение от vshekun emailИскать по авторуВ закладки on 28-Апр-03, 14:36  (MSK)
>А что делает:
>QPixmap pixmap=QPixmap::grabWidget(widget);
>?
>PS. grabWidget - статический метод

   Подскажи, почему так можно сграбить только потомков из родителя, но не виджет из самого себя и потомков? Т.е. если написать

QPixmap::grabWidget(this)

, то будет ругаться. :-( Мне надо грабить виджет целиком. Из потомков.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Как сграбить содержимое QWidget?"
Сообщение от vshekun emailИскать по авторуВ закладки on 28-Апр-03, 15:16  (MSK)
>А что делает:
>QPixmap pixmap=QPixmap::grabWidget(widget);
>?
>PS. grabWidget - статический метод


  Я немного пурги нагнал в прошлом сообщении. Эта ф-я почему-то вылетает с ошибкой когда пытаешься сграбить из конструктора. Т.е. если я bg вызову из конструктора, то он матюгается, если после выполнения конструктора, то грабит. ВНИМАНИЕ ВОПРОС: Как сграбить виджет БЕЗ хх. Т.е. его вид до создания класса xx. Грабить надо из xx.

class xx : public QWidget
{
    QWidget *widget;
    .
    .
    .
}

xx::xx (QWidget *parent) : QWidget(parent)
{
    widget = parent;
    .
    .
    .
}

void xx:bg()
{
    QPixmap mp = QPixmap::grabWidget(widget);
}

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Как сграбить содержимое QWidget?"
Сообщение от XMan Искать по авторуВ закладки on 28-Апр-03, 21:30  (MSK)
А как ты собираешься грабить виджет, если он еще не нарисован ? А рисуется он не в конструкторе, а при вызове метода show :)

А сграбить без xx можно при помощи замены xx на parent в любом месте методов класса :)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Как сграбить содержимое QWidget?"
Сообщение от vshekun Искать по авторуВ закладки on 30-Апр-03, 10:51  (MSK)
>А как ты собираешься грабить виджет, если он еще не нарисован ?
>А рисуется он не в конструкторе, а при вызове метода show
>:)
>
>А сграбить без xx можно при помощи замены xx на parent в
>любом месте методов класса :)


Черт! А вот слона-то я и не заметил. Спасибо.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Как сграбить содержимое QWidget?"
Сообщение от vshekun emailИскать по авторуВ закладки on 05-Май-03, 13:49  (MSK)
>А как ты собираешься грабить виджет, если он еще не нарисован ?
>А рисуется он не в конструкторе, а при вызове метода show
>:)

   Прорисовал:

class VCiferblat : public QWidget, public PThread {
.
.
.
}

class ImageItem: public QCanvasRectangle
{
public:
    ImageItem( QImage img, QCanvas *canvas );
     QPixmap getPixmap();
protected:
    void drawShape( QPainter & );
private:
    QImage image;
    QPixmap pixmap;
};


ImageItem::ImageItem( QImage img, QCanvas *canvas )
    : QCanvasRectangle( canvas ), image(img)
{
    setSize( image.width(), image.height() );

#ifndef _WS_QWS_
    pixmap.convertFromImage(image, OrderedAlphaDither);
#endif
}

QPixmap ImageItem::getPixmap()
{
#ifdef _WS_QWS_
    return( image->convertFromImage() );
#else
    return( pixmap );
#endif
}

void ImageItem::drawShape( QPainter &p )
{
#ifdef _WS_QWS_
    p.drawImage( int(x()), int(y()), image, 0, 0, -1, -1, OrderedAlphaDither );
#else
    p.drawPixmap( int(x()), int(y()), pixmap );
#endif
}

VCiferblat::VCiferblat(QWidget *parent, const char *name) : QWidget(parent, name)
{
   .
   .
   .
   widget        = parent;
   .
   .
   .
   resize(0,0);
   canvasLine    = new QCanvasLine(canvas);
   canvasLine->setZ(250);
   .
   .
   .
   canvasView = new QCanvasView(canvas, widget);
   canvasView->setBackgroundMode( NoBackground );
   canvasView->setVScrollBarMode(QCanvasView::AlwaysOff);
   canvasView->setHScrollBarMode(QCanvasView::AlwaysOff);
   canvasView->setGeometry(x-Radius,y-Radius, Radius*2, Radius*2);
   canvasView->setFrameShape( QFrame::NoFrame );
   .
   .
   .
   canvas->update();
   .
   .
   .
   QPixmap mp;
   widget->show();
   canvasView->hide();
   sleep(10);
   mp=QPixmap::grabWidget(widget, x-Radius, y-Radius, Radius*2, Radius*2);
   cerr << "mp" << &mp <<endl;
}

====

BezierTest::BezierTest( QWidget* parent,  const char* name, bool modal, WFlags fl )
    : QDialog( parent, name, modal, fl )
{
    .
    .
    .
    m1 = new VCiferblat (this, "1");
    .
    .
    .
}

   Виджет вижу.. Эффект тот же.. :((

>А сграбить без xx можно при помощи замены xx на parent в
>любом месте методов класса :)

   Хм.. Не подумал. :)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Как сграбить содержимое QWidget?"
Сообщение от XMan Искать по авторуВ закладки on 05-Май-03, 14:56  (MSK)
Ты код заслать можешь на _xman_@mail.ru ? Я посмотрю как это выглядит.
У меня есть такой класс:

class EWidgetManipulatorClass : public QWidget
{
...
    void grab();
...
    QWidget *GrabWidget;
...
};

и реализация метода:

void EWidgetManipulatorClass::grab()
{
    if (GrabWidget) setBackgroundPixmap(QPixmap::grabWidget(GrabWidget));
}

Всё работает :)

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру