Seite 1 von 1

QSplitter voreinstellen

Verfasst: 14. Dezember 2007 18:12
von Flashpixx
Hallo,

ich bin noch recht neu in Qt, aktuell setze ich die Version 4.3.3 unter OSX ein. Ich habe nun ein Fenster erzeugt und möchte nun, dass der Hauptsplitter das Fenster in 2:1 unterteilt. Ich möchten die OpenGL Fenster links anzeigen und rechts eine Leiste mit verschiedenen Menüs.

Hier mal mein Code:

Code: Alles auswählen

/** erzeugt das Hauptlayout */
void MainWindow::createLayout() {
	//Hauptunterteilung in zwei horizonatel Bereiche (rechts = Property Menü für die Objekte / links = 4 OpenGL Ansichten)
	this->moLayout = new QSplitter(Qt::Horizontal, this->centralWidget());
	this->moLayout->setStretchFactor(1, 1);
	
	//vier OpenGL Ansichten erzeugen und die Perspektiven manuell einstellen
	this->moOpenGL_LeftUp    = new WidgetOpenGL(this);
	this->moOpenGL_RightUp   = new WidgetOpenGL(this);
	this->moOpenGL_LeftDown  = new WidgetOpenGL(this);
	this->moOpenGL_RightDown = new WidgetOpenGL(this);
	
	
	//Unterteilung für den linken Bereich (OpenGL Ansichten)
	this->moLayoutOpenGL = new QSplitter(Qt::Vertical, this);
	this->moLayoutOpenGL->setStretchFactor(1, 1);
	
	//Unterteilung OpenGL oben
	this->moLayoutOpenGL_Up = new QSplitter(Qt::Horizontal, this);
	this->moLayoutOpenGL_Up->setStretchFactor(1, 1);
	this->moLayoutOpenGL_Up->addWidget( this->moOpenGL_LeftUp );
	this->moLayoutOpenGL_Up->addWidget( this->moOpenGL_RightUp );
	
	//Unterteilung OpenGL unten
	this->moLayoutOpenGL_Down = new QSplitter(Qt::Horizontal, this);
	this->moLayoutOpenGL_Down->setStretchFactor(1, 1);
	this->moLayoutOpenGL_Down->addWidget( this->moOpenGL_LeftDown );
	this->moLayoutOpenGL_Down->addWidget( this->moOpenGL_RightDown );
	
	
	//einfügen in den OpenGL Splitter
	this->moLayoutOpenGL->addWidget( this->moLayoutOpenGL_Up );
	this->moLayoutOpenGL->addWidget( this->moLayoutOpenGL_Down );
	
	//Property Widget einfügen
	this->moProperty = new WidgetProperties();
	
	
	//Layouts ineinanderfügen und im Hauptfenster die Unterteilung setzen
	this->moLayout->addWidget( this->moLayoutOpenGL );
	this->moLayout->addWidget( this->moProperty );

	this->setCentralWidget( this->moLayout );
}
Mit diesem Code ist der Hauptsplitter komplett am linken Rand, so dass man die OpenGL Fenster nicht sieht.

Danke für die Hilfe

Phil

Verfasst: 15. Dezember 2007 08:54
von patrik08
Der Qsplitter kann man gut steuern ... einfach speichern was passiert ist jedesmal... erstellen und speichern

QSettings setter; halt einfach den wert der breite hoehe ecc...

Code: Alles auswählen

    /* erstellen */
    
    splitter = new QSplitter(wrapper);
    splitter->setOrientation ( Qt::Vertical ); 
    splitter->setFrameStyle(QFrame::Panel | QFrame::Raised);
    splitter->setLineWidth(2);
    connect(splitter, SIGNAL(splitterMoved(int,int)), this, SLOT(splitterRegister_in(int,int)));
    
    
    QList<QVariant> SPli = setter.value("Conta/splitter/Faktura/in").toList();
    QList<int> SPLitterValues;
    QListIterator<QVariant> it(SPli);
    while (it.hasNext())  {
    SPLitterValues.append(it.next().toInt());
    }
    if (SPLitterValues.size() > 0) {
    splitter->setSizes(SPLitterValues);
    }
    
/* speichern */

void splitterRegister_in(int w ,int i )
{
    QList<QVariant> SPligo;
    QList<int> SPli = splitter->sizes();
    QListIterator<int> it(splitter->sizes());
     while (it.hasNext())  {
         SPligo.append (it.next() );
     }
    setter.setValue("Conta/splitter/Faktura/in",SPligo);
}