Qt label wymiary

Qt label wymiary
ON
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad 8 lat
  • Postów:12
0

jak pobrać obecne wymiary labela ?
próbowałem

Kopiuj
 int h = labelFoto1P->height();
int h = labelFoto1P->width;

ale bez skutku

A9
  • Rejestracja:prawie 9 lat
  • Ostatnio:około miesiąc
  • Postów:408
0

A skąd Ci się wzięło "height()" skoro to nie funkcja tylko zmienna?
Poza tym 2 właściwości chcesz zapisać do jednej zmiennej.
Nie znam Qt ale zakładając, że schrzaniłeś tylko te dwie rzeczy powinno by:

Kopiuj
int h = labelFoto1P->height;
int g = labelFoto1P->width; 
edytowany 3x, ostatnio: arkadiusz97
GI
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad 5 lat
  • Postów:35
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:3 minuty
0

Zaraz po konstrukcji label nie ma jeszcze wymiaru.

  • albo musisz mu go nadać
  • albo wstawić do QLayout, który będzie zarządzał jego rozmiarem

Jeśli chcesz poznać optymalny rozmiar widget-a, to potrzebujesz użyć sizeHint http://doc.qt.io/qt-5/qwidget.html#sizeHint-prop


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
ON
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad 8 lat
  • Postów:12
0

Oj mój błąd przy pisaniu posta ... druga zmienna była" w" chodzi o to że wymiary labela ustalone w qteditor w kreatorze gui czy jakoś tak się on nazywa. A pobrać jego wymiary chce dlatego że po rozciągnięciu okna label zmienia wymiar rozciągając się z oknem

gośćabc
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Szczecin
  • Postów:500
0
ozi_ns napisał(a):

Oj mój błąd przy pisaniu posta ... druga zmienna była" w" chodzi o to że wymiary labela ustalone w qteditor w kreatorze gui czy jakoś tak się on nazywa. A pobrać jego wymiary chce dlatego że po rozciągnięciu okna label zmienia wymiar rozciągając się z oknem

wywal go zatem z layoutu MainWindow to przestanie się rozciągać

ON
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad 8 lat
  • Postów:12
0

To wiem tylko że to rozciąganie mi odpowiada bo wstawiam w niego obraz a czym wiecej miejsca tym większy obraz. Wymiary potrzebne mi do skalowania obrazów będących znacznie wiekszymi aby zmieścić je w obecnym rozmiarze labela

MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:3 minuty
1

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
ON
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad 8 lat
  • Postów:12
0

no niby działa jakieś to rozwiązanie jest ale jeden minus... nie zachowuje wówczas proporcji. a chce wyświetlać obraz maksymalnie wielki ale zachować proporcje. dodam dalszą cześć kodu by wiadomo było o co mi chodziło

Kopiuj
        int w = labelFoto1P->height();
        int h = labelFoto1P->width();
        QPixmap img1("1.bmp");
        QPixmap img2("2.bmp");

        ui->labelFoto1P->setPixmap(img1.scaled(w,h,Qt::KeepAspectRatio));
        ui->labelFoto1P->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
        ui->labelFoto2L->setPixmap(img2.scaled(w,h,Qt::KeepAspectRatio));
        ui->labelFoto2L->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); 
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:3 minuty
0

kiedyś napisałem layout, który utrzymuje aspect ratio dowolnego widget'a. Jak znajdę do pokaże (nie chce mi się pisać od nowa).
Pytanie, który kierunek ma być dominujący? Czy wysokość ma być dostosowana do szerokości (łatwe od zrobienia bo Qt w tym pomaga), czy na odwrót (trudniejsze)?


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
ON
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad 8 lat
  • Postów:12
0

to drobny dodatkowy problem;/ zależy od obrazu otóż chce stworzyć coś takiego..
1)ktoś ze swoich zasobów wybiera sobie dowolne zdjęcie.
2)jest ono wczytywane i wyświetlane w tym labelu(znajduje się on w rogu okna) oraz dopasowuje się do wymiarów labela(maksymalny rozmiar zachowując proporcje)

chciałem pobierać wymiar labela by z KeepAspectRatio wyświetlać co raczej rozwiązało by problem

edytowany 1x, ostatnio: ozi_ns
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:7 minut
0

ale jeden minus... nie zachowuje wówczas proporcji. a chce wyświetlać obraz maksymalnie wielki ale zachować proporcje

No to wylicz te proporcje, skoro KeepAspectRatio nie robi tego czego się spodziewasz.

MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:3 minuty
0
ozi_ns napisał(a):

2)jest ono wczytywane i wyświetlane w tym labelu(znajduje się on w rogu okna) oraz dopasowuje się do wymiarów labela(maksymalny rozmiar zachowując proporcje)

MarekR22 napisał(a):

który kierunek ma być dominujący? Czy wysokość ma być dostosowana do szerokości (łatwe od zrobienia bo Qt w tym pomaga), czy na odwrót (trudniejsze)?

Jeśli nie rozumiesz pytania to wstaw rysunek layout-a jaki zaprojektowałeś.

Tu wskazówka ze SO:
http://stackoverflow.com/a/24264774/1387438


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 2x, ostatnio: MarekR22
ON
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad 8 lat
  • Postów:12
0

jesli dobrze zrozumiałem to będzie szerokość ale na wszelki wypadek w załączniku
a tak na marginesie jeszcze jedno pytanko...

Kopiuj
  QPixmap img1("1.jpg");
    if(img1.isNull())
        img1=img1("brak.jpg");

jak osiągnąć coś tego typu? słownie:

  1. wczytuje obraz/plik
  2. jesli go nie ma to wczytuje się inny.
    nie bardzo wiem jak mam deklarować przy drugim wczytaniu innego pliku..
    próbowałem
Kopiuj
  QPixmap img1("1.jpg");
    if(img1.isNull())
        QPixmap img1("brak.jpg");

oraz

Kopiuj
  QPixmap img1("1.jpg");
    if(img1.isNull())
        img1("brak.jpg");

nie wiem jak zadeklarować ponownie by zmienić zawartość img1.

edytowany 3x, ostatnio: ozi_ns
Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:7 minut
1

Jakoś tak.

Kopiuj
QPixmap img1;
if (!img1.load("1.jpg"))
    img1.load("brak.jpg");

Nie sprawdzane.

ON
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad 8 lat
  • Postów:12
0

haha fakt działa miałem przed nosem ale przeoczyłem :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.