Qt wszystkie style css w pliku qss...

0

W swojej aplikacji używam sporo styli css i do tej pory wrzucałem wszystko w odpowiednich klasach poprzez ->setstylesheet( ... ); teraz jednak postanowiłem przenieść wszystko do osobnego pliku qss i tutaj pojawił się problem... Stworzyłęm plik z rozszerzeniem qss, dodałem do zasobów, wczytuje go w pliku main tak

QFile style_file( ":/style/style.qss" );
    if( style_file.open( QFile::ReadOnly ) )
    {
        qDebug()<< "plik otwarty...";
    }

    QString styleSheet = QLatin1String( style_file.readAll() );
    app.setStyleSheet( styleSheet );

Plik qss wygląda tak

QLineEdit
{
border: 2px solid gray;
border-radius: 10px;
padding: 0 8px;
selection-background-color: darkgray;
}

QHeaderView::section
{
font: bold 24px;
color:rgb( 176, 176, 176 );
background-color:rgb(40,40,40);
}

QHeaderView:hover
{
color: white;
}

I teraz powiedzcie mi dlaczego czyta i stosuje tylko styl QHeaderView::section a pozostałe 2 style olewa? Jeżeli dodam w kodzie

this->horizontalHeader()->setStyleSheet( "QHeaderView::section:hover{ color: white }" );

to działa prawidłowo a z pliku nie chce załadować tego stylu co robię źle? ;)

0

Próbowałeś sprawdzić co się stanie jak zmienisz kolejność?

0

W pliku qss dałem

QHeaderView::section
{
font: bold 24px;
color:rgb( 176, 176, 176 );
background-color:rgb(40,40,40);
}

QHeaderView:hover
{
color: white;
}

QLineEdit
{
border: 2px solid gray;
border-radius: 10px;
padding: 0 8px;
selection-background-color: darkgray;
}

Ale to nic nie zmieniło, dalej wczytuje i stosuje tylko styl QHeaderView::section

Zauważyłem też że jak w kodzie w konstruktorze wpisze te 2 style

this->setStyleSheet( "HeaderView::section { font: bold 14px; color:rgb( 176, 176, 176 ); background-color:rgb(40,40,40)}" );
this->setStyleSheet( "HeaderView::section:hover{ color: white }" );

to jeden wyklucza drugi, stosuje tylko ten który podam jako ostatni

0

No bo nadpisujesz wartość to jest normalne. Musisz podać to za pomocą jednego string.

0

Nadal nie wiem dlaczego style z pliku nie wczytują się prawidłowo, za to gdy wkleiłem te style do projektanta w okienku "Modyfikuj arkusz stylu" poprzez wciśniecie prawym na mainwindow i dalej "zmień arkusz stylu..." to style działają prawidłowo więc chyba zostanę przy wrzuceniu wszystkiego właśnie w projektancie chociaż z ciekawości chciałbym wiedzieć co z tym plikiem może być nie tak.

0

Ja tworząc jedna apke napisałem własne api do obsługi layoutu, co dało mi większą kontrole bo mogłem zmienić wygląd tylko np danego specyficznego labela ;) Tylko, że w takim przypadku użyłem własnego formatu pliku + ręczna obsługę ustawiania stylu wewnątrz aplikacji.

0

Może spróbuj coś takiego:

* > QLineEdit
{
        border: 2px solid gray;
        border-radius: 10px;
        padding: 0 8px;
        selection-background-color: darkgray;
}

* > QHeaderView::section
{
        font: bold 24px;
        color:rgb( 176, 176, 176 );
        background-color:rgb(40,40,40);
}

* > QHeaderView::section:hover
{
        color: white;
}

Możliwe że to coś da. Kiedyś zdaje się miałem podobny problem. * > oznacza "dla każdego widgeta będącego parentem dla wymienionego obiektu danej klasy" ma być aplikowany styl.

0

Hostel niestety to tez nic nie dało, w każdym razie dla mnie to nawet lepiej bo wszystkie style będą wbudowane bezpośrednio w aplikacje bez potrzeby dodatkowego pliku i jednocześnie wszystkie są w jednym miejscu ;) Bo do teraz style konkretnych elementów umieszczałem w tych elementach a teraz te wszystkie style wrzuciłem do głównego okna mainwindow.

mr_jaro tak jak napisał MarekR22 pisanie własnego api do czegoś co już w qt jest wydaje się niepotrzebne tym bardziej że do tego o czym piszesz wystarczy zastosować odpowiedni selector... ale co kto lubi ;) Dzięki wszystkim za odpowiedzi ;)

0

Tzn ja chciałem w nim zrobić możliwość obsługi skórek robionych przez każdego kto zna css w możliwie najprostszy sposób, tak żeby chodziło dokładnie jak ja chcę ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1