Problem mit einem SubWindow

Alles rund um die Programmierung mit Qt
Antworten
kleineSchildy
Beiträge: 76
Registriert: 16. September 2004 18:29
Wohnort: Dresden

Problem mit einem SubWindow

Beitrag von kleineSchildy »

Hallo,

wo liegt das Problem.

Ich erzeuge ein Objekt vom Typ "QWidget" als Subwindow. Mein Konstruktur sieht so aus:

Code: Alles auswählen

MyPicture::MyPicture(){

    this->resize(100,100);
}
bzw die Header-Datei:

Code: Alles auswählen

#ifndef MYPICTURE_H
#define MYPICTURE_H

#include <QWidget>


class MyPicture: public QWidget
{
    Q_OBJECT
    
    	
public:
    MyPicture();
    
    void createPicture(int);
    
private slots:
   
private:

};
#endif
und die Einbindung so:

Code: Alles auswählen

		sourcePic = new MyPicture();
		sourcePic->createPicture(source);
		mdiArea->addSubWindow(sourcePic);
		sourcePic->show();
in der Funktion "createPicture" wird nur der Titel des Subwindow gesetzt.

Warum funktioniert das resize nicht? Man sieht nach dem Erzeugen nur die schmale Titelleiste.

Danke für eure Hilfe.

Viele Grüße
Jana
DeepDiver
Beiträge: 34
Registriert: 7. November 2007 10:10
Wohnort: Fürstenfeldbruck
Kontaktdaten:

Beitrag von DeepDiver »

Versuch doch mal:

Code: Alles auswählen

MyPicture::MyPicture(QWidget* parent)
:QWidget(parent)
{
    this->resize(100,100);
}
Viel Glück,

Tom

PS: Header natürlich analog anpassen ....
kleineSchildy
Beiträge: 76
Registriert: 16. September 2004 18:29
Wohnort: Dresden

Beitrag von kleineSchildy »

Hallo Tom,

danke erstmal für deine Antwort. Ich habe es entsprechend angepasst:

Code: Alles auswählen

class MyPicture : public QWidget
{
    Q_OBJECT
    
    	
public:
    MyPicture(QWidget *parent = 0);
und

Code: Alles auswählen

MyPicture::MyPicture(QWidget *parent):QWidget(parent){
				   
	this->resize(300,300);
	}
und
Das Widget wird in einem MainWindow erzeugt.

Code: Alles auswählen

MyPicture*sourceModul;
sourceModul = new MyPicture(this);
aber keine Reaktion, das Fenster wird nicht auf die vorgegebene Größe gesetzt.

Woran kann es noch liegen?

Viele Grüße
Jana
marco
Beiträge: 41
Registriert: 6. Dezember 2006 23:46
Wohnort: Niederrhein

Beitrag von marco »

hallo,

klappt es denn, wenn du resize von "außen" aufrufst?

Code: Alles auswählen

sourcePic->resize(300, 300);
Gruß, Marco
kleineSchildy
Beiträge: 76
Registriert: 16. September 2004 18:29
Wohnort: Dresden

Beitrag von kleineSchildy »

Hallo Marco,

nein, es funktioniert nicht :shock: und nun?
DeepDiver
Beiträge: 34
Registriert: 7. November 2007 10:10
Wohnort: Fürstenfeldbruck
Kontaktdaten:

Beitrag von DeepDiver »

addSubWidget gibt Dir QMdiSubWindow * zurück.

Mach den resize doch mal darauf.

Tom
marco
Beiträge: 41
Registriert: 6. Dezember 2006 23:46
Wohnort: Niederrhein

Beitrag von marco »

...weiterprobieren :-)

hab gerade mal in die doku geschaut... wirkt manchmal wunder.

Code: Alles auswählen

int n = windowno;
mdiArea->subWindowList()[n]->resize(300, 300);
so wirds wahrscheinlich klappen. also nicht auf das widget im fenster sondern auf das fenster resize anwenden.
Gruß, Marco
Antworten