QWidgets fuer Layouts?
Verfasst: 14. April 2008 08:25
Tagchen,
ich bastle (mal wieder) an einer kleinen Oberflaeche.
http://valouch.info/screen/cdl/binview_form.png
Im Designer und seiner Vorschau (Screenshot links oben und unten) funktioniert das alles. Rechts ist die Objekthierarchie. Nun hab ich das was ich da von uic bekommen hab in eine Klasse geballert. Nuuuun hat der neue uic, der mit Qt 4.4 rc1 gekommen ist, einfach nur die Methode addLayout genommen, anstelle wie bisher ein Widget anzulegen, ein Layout anzulegen, dem widget das Layout zu verpassen und ganz am schluss das Widget zum Parent-Layout hinzugefuegt.
Ergebnis sieht man oben rechts im Screenshot. Das ganze ist direkt ganz oben links in den linken Rand geschoben. Der Code der Klasse:Lustich ist auch, dass ich, wenn ich die letzte Zeile entkommentiere, einen Segfault bekomme.
Generell aber die Frage, sollte man fuer jedes Layout ein Widget anlegen? Da ich das bisher so gemacht hab, ist die Erstellung der Oberflaeche ein wenig... sagen wir unuebersichtlich, vor allem die Vergabe von Namen ist in den meisten Faellen ein wenig schwierig.
C167
ich bastle (mal wieder) an einer kleinen Oberflaeche.
http://valouch.info/screen/cdl/binview_form.png
Im Designer und seiner Vorschau (Screenshot links oben und unten) funktioniert das alles. Rechts ist die Objekthierarchie. Nun hab ich das was ich da von uic bekommen hab in eine Klasse geballert. Nuuuun hat der neue uic, der mit Qt 4.4 rc1 gekommen ist, einfach nur die Methode addLayout genommen, anstelle wie bisher ein Widget anzulegen, ein Layout anzulegen, dem widget das Layout zu verpassen und ganz am schluss das Widget zum Parent-Layout hinzugefuegt.
Ergebnis sieht man oben rechts im Screenshot. Das ganze ist direkt ganz oben links in den linken Rand geschoben. Der Code der Klasse:
Code: Alles auswählen
//header
class BinaryViewer : public QWidget
{
Q_OBJECT
public:
BinaryViewer ( QString, QString, QWidget *parent = 0 );
~BinaryViewer();
private:
void createUi();
// void createRootNodes();
// void createTree ( );
// Layout
QVBoxLayout *mainLayout;
QTreeWidget *treeWidget;
QTabWidget *tabWidget;
QVBoxLayout *baseLayout1;
QHBoxLayout *horizontalLayout;
QLabel *pic1;
QLabel *pic2;
QVBoxLayout *verticalLayout;
QLabel *pictureLabel;
QTextEdit *description;
QTextEdit *extendedDescription;
// the tree view
QString m_table, m_name;
};
// source
void BinaryViewer::createUi()
{
// main layout
mainLayout = new QVBoxLayout ( this );
setLayout ( mainLayout );
// tree widget
treeWidget = new QTreeWidget ( this );
treeWidget->setObjectName ( QString::fromUtf8 ( "treeWidget" ) );
treeWidget->setStyleSheet ( "max-width: 150px" );
mainLayout->addWidget ( treeWidget );
baseLayout1 = new QVBoxLayout ( );
baseLayout1->setObjectName ( QString::fromUtf8 ( "verticalLayout_2" ) );
horizontalLayout = new QHBoxLayout ( );
horizontalLayout->setObjectName ( QString::fromUtf8 ( "horizontalLayout" ) );
// tab widget
tabWidget = new QTabWidget ( this);
tabWidget->setObjectName ( QString::fromUtf8 ( "tabWidget" ) );
tabWidget->setStyleSheet ( QString::fromUtf8 ( "" ) );
tabWidget->setTabPosition ( QTabWidget::South );
// tab 1
pic1 = new QLabel ( this );
pic1->setObjectName ( QString::fromUtf8 ( "tab1" ) );
pic1->setGeometry ( QRect ( 0, 0, 115, 179 ) );
tabWidget->addTab ( pic1, QString ( "Bild 1" ) );
// tab 2
pic2 = new QLabel ( this );
pic2->setObjectName ( QString::fromUtf8 ( "tab2" ) );
pic2->setGeometry ( QRect ( 0, 0, 399, 292 ) );
tabWidget->addTab ( pic2, QString ( "Bild 2" ) );
horizontalLayout->addWidget ( tabWidget );
verticalLayout = new QVBoxLayout();
verticalLayout->setObjectName ( QString::fromUtf8 ( "verticalLayout" ) );
pictureLabel = new QLabel ( this );
pictureLabel->setObjectName ( QString::fromUtf8 ( "pictureLabel" ) );
pictureLabel->setStyleSheet ( QString::fromUtf8 ( "border: 1px solid black;" ) );
verticalLayout->addWidget ( pictureLabel );
description = new QTextEdit ( this );
description->setObjectName ( QString::fromUtf8 ( "description" ) );
verticalLayout->addWidget ( description );
horizontalLayout->addLayout ( verticalLayout );
baseLayout1->addLayout ( horizontalLayout );
// extended description
extendedDescription = new QTextEdit ( this );
extendedDescription->setObjectName ( QString::fromUtf8 ( "extendedDescription" ) );
baseLayout1->addWidget ( extendedDescription );
// horizontalLayout->addLayout ( baseLayout1 );
}Generell aber die Frage, sollte man fuer jedes Layout ein Widget anlegen? Da ich das bisher so gemacht hab, ist die Erstellung der Oberflaeche ein wenig... sagen wir unuebersichtlich, vor allem die Vergabe von Namen ist in den meisten Faellen ein wenig schwierig.
C167