Habe folgendes Problem:
Ein von QWidget abgeleitetes Fenster soll einfach via hide() verschwinden und anschliessend mit show() wieder dargestellt werden. Das ganze hat auch prima funktioniert (unter Qt3.x). Seit dem wechsel zu Qt 4 funzt das ganze nicht mehr
Ich krieges es schlicht nicht mehr sichtbar!!
Habe es versucht mit show(), update(), repaint(), QCoreApplication::processEvents(), ..... alles ohne erfolg.
Wenn ich die Funktion isVisible() aufrufe erhalte ich ein true obschon das Fenster weder sichtbar noch die zugehörige paintEvent() Methode aufgerufen wird. Letzteres geschieht nicht einmal beim Aufruf von repaint()...
Hoffe jemand kann mir helfen
Konstruktor:
Code: Alles auswählen
QImageDialog::QImageDialog(QWidget* pParent, const char *cName)
: qImageDialogForm(pParent, cName){
m_pImage = NULL;
this->setMinimumSize(200, 100);
this->setBaseSize(1000, 600);
//this->setModal(false);
m_nImagePosX = 0;
m_nImagePosY = 0;
m_dZoom = 1;
m_lbImageList->clear();
}
Aufgerufen wird hide() beim gewollten Schliessen des Fensters (habe jedoch hide auch schon via button aufgerufen mit demselben ergebnis
Das QCloseEvent wird mit Absicht ignoriert um zu vermeiden, dass das Fenster zerstört wird.
Code: Alles auswählen
void QImageDialog::closeEvent(QCloseEvent *event)
{
event->ignore();
printf("closeEvent\n");
hide();
}
Die Methode in welcher show() aufgerufen wird:
Code: Alles auswählen
void QImageDialog::addImage(const QImage& image){
QImage *img;
img = new QImage( image );
// make this the current image
m_pImage = img;
printf("adding image...\n");
// If this is the first image to reach this dialog, adjust the zoom factor
// and the dialog's size so that everything is looking fine.
if (true)// m_lImages.isEmpty() )
{
...
}
// Paint new image
printf("updating...");
this->show();
this->repaint();
printf("updated\n");
printf("isVisible :%i\n", this->isVisible());
printf("enabled :%i\n", this->isEnabled());
// Add the image to the list
m_lImages.append(img);
int i = m_lImages.find(img);
img->setText("vqkk", NULL, QString("Image %1").arg(i, 0, 10));
m_lbImageList->insertItem(img->text("vqkk", NULL), i);
}