Qt - zmienianie kształtu i wyglądu przycisku (QPushButton'a)

Odpowiedz Nowy wątek
2014-12-13 17:25
0

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:

  1. 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/ques[...]ectangular-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'?
  2. 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.
  3. 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"));
  4. 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.

Pozostało 580 znaków

2014-12-13 18:35
0

Ja do zmiany wyglądu przycisków robię coś zupełnie innego a mianowicie przypisuje od razu do wszystkich przycisków.

Kod w pliku main.cpp

QApplication a(argc, argv);
    metin2_patcher w;
    w.show();
 
    a.setStyleSheet("QPushButton{background-color: rgb(0, 102, 102);"
                    "border-width: 1px;"
                    "border-radius: 5;"
                    "color: white;"
                    "border-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 0, stop: 0 darkGray, stop: 1 darkGray)"
                                  "qlineargradient(x1: 0.5, y1: 0.5, x2: 0.5, y2: 0.5, stop: 0 black, stop: 1 black)"
                                  "qlineargradient(x1: 1, y1: 1, x2: 1, y2: 1, stop: 0 darkGray, stop: 1 darkGray);}"
                    );
No właśnie. Mi chodzi o to, żeby zmodyfikować tylko wybrane przyciski. - gogolon 2014-12-13 19:06

Pozostało 580 znaków

2014-12-13 20:24
0

Nikt nic nie wie?

Pozostało 580 znaków

2014-12-16 16:44

Dobra, chyba trzeba po prostu zadać to pytanie na jakimś forum poświęconym QT. Temat do usunięcia.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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