Qt jeden styl dla wszystkich elementów QLineEdit

0

Witam, potrzebuję stworzyć w programie kilkanaście elementów QLineEdit, i każdy ma mieć taki sam "styl". Uznałem, że przypisywanie danych do każdego elementu to strata czasu, więc piszę do was z pytaniem czy da radę jakoś podwiążać do jakiegoś obiektu a następnie tylko tworzyć QLineEdit i przypisać do niego gotowy styl ??

Potrzebuję aby każdy element QLineEdit miał :

  • wyrównanie tekstu na do środka
  • stałą szerokość 220
  • był tylko do odczytu
  • był wyłączony
  • kolor czerwony

Kod, który aktualnie mam wygląda tak :

QPalette *palette = new QPalette();
    palette->setColor(QPalette::Text, Qt::red);
modelGPU_value = new QLineEdit(this);
    modelGPU_value->setReadOnly(true);
    modelGPU_value->setAlignment(Qt::AlignCenter);
    modelGPU_value->setFixedWidth(220);
    modelGPU_value->setDisabled(true);
    modelGPU_value->setPalette(*palette);
0

Wszystko poza "tylko do odczytu" powinieneś zrobić za pomocą "style sheet"
Globalnie dla całej apki to będzie wyglądać jakoś tak:

qApp->setStyleSheet("QLineEdit { color-foreground: red; width-fixed: 220 px; text-align: center }")

Pisane z pamięci więc pewnie nie zadziała od razu.
Poprawię wieczorem jeśli sobie nie poradzisz czytając dokumentację:
http://doc.qt.io/qt-5/stylesheet.html
http://doc.qt.io/qt-5/stylesheet-reference.html

0

Zanim to napisałeś to właśnie dotarłem do tego :D

Na razie zrobiłem takie coś, odnośnie całego groupBoxa

groupGPU->setStyleSheet("QLineEdit {qproperty-alignment: AlignCenter; max-width: 220px;}");

PS. Ale dzięki, że chociaż napisałeś :)
PS2. Nie ma jedynie ReadOnly oraz Disabled, ale ostatecznie wygląda tak :

groupGPU->setStyleSheet("QLineEdit {color: blue; qproperty-alignment: AlignCenter; max-width: 220px;}");
0

@MarekR22 Mam problem z QLabel a mianowicie chciałbym, aby tekst był od prawej do lewej, tylko za pomocą setStyleSheet nie mogę coś tego zrobić.

Oto kod :

groupGPU->setStyleSheet("QLabel { min-width: 40px; max-width: 75px; text-align: right; color: red; }");
0

Zrobiłem tak ale nic nie daje :

groupGPU->setStyleSheet("QLabel {qproperty-alignment: AlignRight; qproperty-wordWrap: true; }
0

No ale w linku jest inaczej!
U mnie taki string działa:

QLabel {
    qproperty-alignment: 'AlignVCenter | AlignRight';
    qproperty-wordWrap: true;
}
0

@MarekR22 zadziałało dopiero gdy oprócz tego co ty napisałeś dodałem jeszcze stałe wartości dla szerokości (min-width, max-width).

0

Napisałem sobie aplikację do testowania style sheet jak ją nieco dopieszczę, to może wystawię ja na github.

0

OK, jak coś to pw :D

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