Layout und Stylesheet

Alles rund um die Programmierung mit Qt
Antworten
uha
Beiträge: 21
Registriert: 15. Februar 2006 08:36

Layout und Stylesheet

Beitrag von uha »

Sorry, hat sich erledigt. Man sollte die Doku auch richtig lesen, die width-Angaben funktionieren nur mit Subcontrols.

Hallo,

ich beschäftige mich gerade mit den Stylesheet-Möglichkeiten von Qt. Dazu habe ich ein einfaches Testprogramm erstellt, in dem ich einem QWidget ein Gridlayout zugewiesen habe. In diesem Layout schieben ich pro Row jeweils 2 QLabel rein. Diesen Labels möchte ich nun die Breite per CSS zuweisen. In meiner CSS-Datei steht dazu:

Code: Alles auswählen

QLabel#label_name {
  background-color: red;
  color: black;
  width: 50px;
}
QLabel#label_value {
  background-color: blue;
  color: white;
  width: 150px;
}
Die Hintergrund- und Textfarbe wird korrekt angezeigt, aber die Breite wird ignoriert. Beide QLabels haben die gleiche Breite, und zwar 50% des kompletten Layouts. Nun meine Frage, funktionieren die Breitenangaben nicht, wenn die Objekte in einem Layout stecken, oder habe ich was übersehen?
Wäre für jeden Tipp dankbar
Gruß
Uwe

Nachtrag: Falls der Quellcode vom Testprogramm gebraucht wird:

Code: Alles auswählen

#include <QtGui>
#include "css.h"

Ccss::Ccss()
{
    createMenu();
    
    QFile file;
    file.setFileName("f:/test_css/style.css");
    file.open(QFile::ReadOnly);

    _scrollArea = new QScrollArea;
    
    QString styleSheet = QLatin1String(file.readAll());
    qApp->setStyleSheet(styleSheet);

    _scrollWidget = new QWidget();
    _scrollWidget->setObjectName("scroll_widget");

    QGridLayout *layout = new QGridLayout();

    QLabel *title = new QLabel;
    title->setObjectName("label_title");
    title->setFrameStyle(QFrame::StyledPanel);
    title->setText("Label Titel Label Titel Label Titel");

    layout->addWidget(title, 0, 0, 1, -1);

    QLabel *name = new QLabel;
    name->setObjectName("label_name");
    name->setFrameStyle(QFrame::StyledPanel);
    name->setText("Label Name");
    layout->addWidget(name, 1, 0);

    QLabel *value = new QLabel;
    value->setObjectName("label_value");
    value->setFrameStyle(QFrame::StyledPanel);
    value->setText("Label Value");
    layout->addWidget(value, 1, 1);
    
    _scrollWidget->setLayout(layout);
    _scrollArea->setWidget(_scrollWidget);

    setCentralWidget(_scrollArea);
    setWindowTitle(tr("CSS-Test"));
    resize(500, 400);
}
void Ccss::createMenu()
{
    QMenu *fileMenu;
    
    fileMenu = menuBar()->addMenu(tr("&File"));
    QAction *reload = new QAction(tr("&Reload"), this);
    connect(reload, SIGNAL(triggered()), this, SLOT(reload()));
    QAction * exit = new QAction(tr("&Beenden"), this);
    connect(exit, SIGNAL(triggered()), this, SLOT(quit()));
    fileMenu->addAction(reload);
    fileMenu->addAction(exit);

}
void Ccss::quit()
{
   qApp->quit();
}
void Ccss::reload()
{
    QFile file;
    file.setFileName("f:/test_css/style.css");
    file.open(QFile::ReadOnly);
    QString styleSheet = QLatin1String(file.readAll());
    qApp->setStyleSheet(styleSheet);
}
Antworten