Witam. Jak w temacie - chodzi o linijki kodu, które pozwolą mi zmienić kształt QPushButton'a. Póki co, po googlowaniu i korzystaniu z metody prób i błędów, doszedłem do czegoś takiego:
PlayButton = new QPushButton(this);
PlayButton->setGeometry(300, 325, 60, 60);
QRect *rect = new QRect(0,0,50,50);
QRegion* region = new QRegion(*rect,QRegion::Ellipse);
PlayButton->setMask(*region);
PlayButton->setIcon(QIcon(":/Graphics/PlayButton.png"));
Mam kilka pytań, bo nawet nie jestem pewien co do końca zrobiłem ;) No więc tak:
- Czemu wielkość obiektu QRect w tym kodzie zawsze musi być mniejsza od wielkości przycisku o 10 (inaczej nie wychodził okrągły przycisk)? Tą część kodu znalazłem na stackoverflow (http://stackoverflow.com/questions/12734319/change-rectangular-qt-button-to-round) i nie jest tam do końca wytłumaczone, jak to działa. Nie wiem, czy dobrze to rozumiem - według mnie wskaźnik 'rect' wskazuje na obszar będący kwadratem 60x60 pix, a wskaźnik 'region' to po prostu 'wycięta', okrągła część obiektu wskazywanego przez 'rect'?
- Czemu tak zrobiony przycisk nie ma konturów? Dodatkowo u mnie przy takich rozmiarach przycisku z lewej strony i z góry są krótkie proste linie.
- Czy do funkcji setMask() nie da się po prostu wysłać obrazka? Chodzi mi o to, żeby przycisk przyjął kształt przysłanego zdjęcia. Próbowałem czegoś tak, ale nie działało:
PlayButton->setMask(":/Graphics/PlayButton.png");
i tak:
PlayButton->setMask(new QPixmap(":/Graphics/PlayButton.png"));
- Jak sprawić, by dodana przeze mnie ikona przycisku była na jego środku? U mnie jest trochę bardziej po prawej.
Z góry dzięki za odpowiedzi.