Witam, mam pytanie odnośnie mojego programu.
Czemu ucina mi przycisk kasowania w połowie?
W załączniku kod oraz zdjęcie z programu
Tak jak na zdjęciu przycisk to "kasowanie"
Może masz w panelu ustawione paddingi albo margines przy samym przycisku.
Sprawdź te wartości. Najprawdopodobniej masz w panelu padding i lewy margines przy przycisku.
@katakrowa: Szukam i szukam i nie mogę znaleźć błędu.
Na czym polegają paddingi?
spnik13 napisał(a):
@katakrowa: Szukam i szukam i nie mogę znaleźć błędu.
Na czym polegają paddingi?
https://www.google.com/search?q=padding+margin
Jeśli używasz Qt to:
https://stackoverflow.com/questions/15247077/how-to-add-some-padding-between-qpushbutton-s-boundary-and-its-inner-text
https://doc.qt.io/qt-5/stylesheet-examples.html
@katakrowa: Włąśnie program jest napisany w środowisku QT creatora.
Zaraz poczytam
Po co ci to:
this->setFixedSize(sizeHint().width(), sizeHint().height());
Jeśli pobierasz sizeHint
w konstruktorze, to ponieważ niektóre widgety mają mechanizm związany ze stylami, który nazywa się polish
, który jest uruchamiany dopiero jak event loop dojdzie do głosu, to sizeHint
w konstruktorze może mieć wartość inną od końcowej wartości oczekiwanej.
Zmień po prostu sizePolicy
i okno samo się dostosuje do pożądanej wielkości, bez czytania sizeHint
.
A najlepiej po prostu wywal tą linijkę.
Teraz ponieważ, ustawiasz sztywny nieprawidłowy rozmiar, to ten guzik nie ma miejsca by się prawidłowo wyświetlić.
@MarekR22: Usunąłem tą wskazaną linijkę, ale nie za bardzo pomogło.
Może usunąć wszędzie komendę "sizeHint."?
sizeHint
nie powinny by przez ciebie używane. To jest informacja dla layout.
Więcej nie da ci się pomóc, bo niewiele więcej wynika z twojego kodu.
@MarekR22: To co powinien zrobić? Nie ma żadnych szans na poprawienie tego przycisku?
To jest tylko część kodu, program został napisany do sprawdzania różnych urządzeń elektrycznych.
Oczywiście, że jest
spróbuj z tym: https://doc.qt.io/GammaRay/gammaray-tools.html
W kodzie masz
QHBoxLayout *btnClearLayout = new QHBoxLayout;
btnClearLayout->addWidget(buttonClear);
btnClearLayout->addWidget(labelClear);
btnClearLayout->addStretch();
spróbuj na chwilę zakomentować linię i zobacz co się stanie
// btnClearLayout->addStretch(); // <- to zakomentuj
i pokaż kod odpowiedzialny za buttonClear
i pytanie czy masz ustawiony mainLayout
?
i mam wrażenie, że pomieszałeś warstwę reprezentacyjną z warstwą biznesową - bo gdybyś miął to napisane w ten sposób, to łatwiej by ci było znaleźć błąd/utrzymać/rozwijać i wrzucić kod tutaj
Więcej nie da ci się pomóc, bo niewiele więcej wynika z twojego kodu.
mało da się wyciągnąć na podstawie tego zlepka