PDA

View Full Version : QWidget



sabeesh
5th October 2007, 07:12
hi,
I have a code like this,
************************************************** ************************************************** *******

pVideo = video;
pViewer = 0;

vconfig = g_pManager->FindVideoDeviceConfig(pVideo->GetIntfName(), pVideo->GetNodeName(), true);
pVOptions = new CVideoOptions();
pVOptions->SetXML(vconfig);
pVideo->SetConfiguration(vconfig);
r = pVideo->Open();




pWidget = new QWidget(this );
assert(pWidget != NULL);
pWidget->setAutoFillBackground(true);
pWidget->setBackgroundRole(QPalette::Base);
pWidget->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
setCentralWidget(pWidget);

//CImagePanelRGB is another class
CCamPanel *pViewer;
pViewer = new CImagePanelRGB(pVideo, pWidget);

// CBasicPanel is another class
CBasicPanel *pLastSnapshot;
pLastSnapshot = new CBasicPanel("snapshot", "Last snapshot", CCamPanel::RGB, pWidget);

if (pViewer) {
QSize viewsize;
QPainter painter;
connect(pViewer, SIGNAL(ChangedVisibleSize(const QSize &)), this, SLOT(DeviceChangedSize(const QSize &)));
viewsize = pVideo->GetSize();
QPixmap blackimg(viewsize);
painter.begin(&blackimg);
painter.fillRect(0, 0, viewsize.width(), viewsize.height(), Qt::black);
painter.setPen(Qt::yellow);
painter.drawText(0, 0, viewsize.width(), viewsize.height(), Qt::AlignCenter, tr("Your last saved snapshot appears here"));
painter.end();

if (pLastSnapshot != 0)
{
pLastSnapshot->SetSize(viewsize);
pLastSnapshot->SetImage(0, blackimg.toImage());
pLastSnapshot->hide();
}
pViewer->show();
}

************************************************** *******************************************
the problum is that, this code create two window. I need one, the second one need to create the second one as a widget in the first wondow.
Please help me to solve this probs.

jpn
5th October 2007, 09:20
A parentless widget is a window. Check that custom widgets like CCamPanel, CBasicPanel etc. properly call and pass the parent to the base class constructor.

sabeesh
9th October 2007, 05:23
Hi,
I have a code in QT4.3 like this,


QWidget *pWidget;
CCamPanel *pViewer;

pWidget = new QWidget(this );
assert(pWidget != NULL);
pWidget->setAutoFillBackground(true);
pWidget->setBackgroundRole(QPalette::Base);
pWidget->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
setCentralWidget(pWidget);

pViewer = new CImagePanelRGB(pVideo, pWidget);

pLastSnapshot = new CBasicPanel("snapshot", "Last snapshot", CCamPanel::RGB, pWidget);


viewsize = pVideo->GetSize();
QPixmap blackimg(viewsize);
painter.begin(&blackimg);
painter.fillRect(0, 0, viewsize.width(), viewsize.height(), Qt::black);
painter.setPen(Qt::yellow);
painter.drawText(0, 0, viewsize.width(), viewsize.height(), Qt::AlignCenter, tr("Your last saved snapshot appears here"));
painter.end();


if (pLastSnapshot != 0)
{
pLastSnapshot->SetSize(viewsize);
pLastSnapshot->SetImage(0, blackimg.toImage());
pLastSnapshot->hide();
}

pViewer->show();


and in another file I have a class like this
BasicPanel.cpp
------------------------


CBasicPanel::CBasicPanel(const char *panel_name, const char *desc, int panel_type, QWidget *parent, const char *name)
: CCamPanel(panel_name, desc, panel_type, TRUE, parent, name)
{

}



My problem is that, when I run this program, it display a window and it hold a white widget. Why did I can't see the other widget?
Please help me.

sabeesh
9th October 2007, 08:10
please help me to solve this