Alles rund um die Programmierung mit Qt
newyew
Beiträge: 4 Registriert: 11. August 2008 12:57
Beitrag
von newyew » 11. August 2008 13:45
Hallo,
in meiner QSplitter-Umgebung habe ich ein QWidget und mein Objekt, welches von QWidget abgeleitet ist, plaziert. Das abgeleitete Objekt nimmt leider nicht den ganzen Teil der QSplitter-Umgebung ein, in der es platziert ist. Woran kann das liegen? Hat doch alles geerbt.
Danke Lars
Header der von QSlitter abgeleiteten Klasse
Code: Alles auswählen
class ColorMixxWidget : public QSplitter
{
Q_OBJECT
public:
ColorMixxWidget(QWidget *parent=0); // is main widget
};
Konstruktoren der von QSlitter abgeleiteten Klasse
Code: Alles auswählen
ColorMixxWidget::ColorMixxWidget(QWidget *parent)
{
setWindowTitle("ColorMixx");
resize(600, 400); // default size of window
setOrientation(Qt::Vertical);
QWidget* w2 = new QWidget();
w2->setStyleSheet("background-color: white");
ColorArea* c1 = new ColorArea();
c1->setStyleSheet("background-color: blue");
addWidget(c1);
addWidget(w2);
}
Header der von QWidget abgeleiteten Klasse
Code: Alles auswählen
class ColorArea : public QWidget
{
Q_OBJECT
public:
ColorArea(QWidget *parent=0);
};
Konstruktoren der von QWidget abgeleiteten Klasse
Code: Alles auswählen
ColorArea::ColorArea(QWidget *parent)
{
// resize(600, 100);
// setStyleSheet("background-color: white");
QLabel *label = new QLabel( this );
label->setText("hallo" );
}[/b][/code]
Dateianhänge
Screenshot widget.png (13.6 KiB) 2584 mal betrachtet
upsala
Beiträge: 3946 Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:
Beitrag
von upsala » 11. August 2008 14:03
Die beiden Widgets des QSplitter nehmen schon den vollen Platz ein, dein QLabel ist aber nur das Child eines solchen Widgets...
newyew
Beiträge: 4 Registriert: 11. August 2008 12:57
Beitrag
von newyew » 11. August 2008 14:27
Das Label habe ich nur eingefügt, da dann zu sehen ist, dass die Hintergrundfarbe nur für den Bereich gültig ist, wo etwas platziert wurde. Wenn das Widget den gesamten Platz der QSplitter-Umgebung einnimmt, warum ist die Hintergrundfarbe dann nicht sichtbar? Warum verhält sich mein abgeleitetes Widget anders als das QWidget? Ich habe jetzt zwei QWidgets in die QSplitter-Umgebung eingesetzt. Der Screenshot zeigt das Ergebnis, was ich eigentlich auch erreichen möchte (allerdings mit meiner Klasse).
Code: Alles auswählen
ColorMixxWidget::ColorMixxWidget(QWidget *parent)
{
setWindowTitle("ColorMixx");
resize(600, 400); // default size of window
setOrientation(Qt::Vertical);
QWidget* w2 = new QWidget();
w2->setStyleSheet("background-color: white");
QWidget* w1 = new QWidget();
w1->setStyleSheet("background-color: blue");
QLabel *label = new QLabel( w1 );
label->setText("hallo" );
// ColorArea* c1 = new ColorArea();
// c1->setStyleSheet("background-color: blue");
addWidget(w1);
addWidget(w2);
}
Dateianhänge
widget.png (12.19 KiB) 2576 mal betrachtet
archer
Beiträge: 306 Registriert: 2. Februar 2006 09:56
Beitrag
von archer » 11. August 2008 15:18
Es wäre noch sinnvoll das Label in ein Layout zu setzen, damit es das ganze widget ausfüllen kann.