>А как ты собираешься грабить виджет, если он еще не нарисован ?
>А рисуется он не в конструкторе, а при вызове метода 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 в
>любом месте методов класса :)
Хм.. Не подумал. :)