crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Как сделать кнопкуу нестандартной формы?
Rocky
  опции профиля:
сообщение 26.1.2010, 21:16
Сообщение #1


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Кто-нибудь знает как можно сделать кнопку например овальной формы? Ну, например вырезать ее по рисунку.. Типа то, что в рисунке (с альфа-каналом) белое - у кнопки обрезалось, а что рисунок - то выводилось на кнопку.. И это же задавало форму?

Заранее огромное спасибо за любой совет!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Rocky
  опции профиля:
сообщение 27.1.2010, 23:30
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Вот там такой вот исходник
class MyButton : public QPushButton
{
    Q_OBJECT
public:
    MyButton(QWidget * parent = 0) : QPushButton(parent) {
        pixmap.load(QLatin1String("../../qtcreator_logo_256.png"));
        setFixedSize(pixmap.size());
        setMask(pixmap.mask());
    }
protected:
    void paintEvent(QPaintEvent * event) {
        QPainter painter(this);
        painter.drawPixmap(rect(), pixmap);
    }
private:
    QPixmap pixmap;
};


Кто-нить знает почему если вот это
this->setFixedSize(m_oPixmap.size());


заменить этим, то кнопок ни фига не видно.. размеры заданы те (т.е. я это вынес из конструктора в отдельный метод)
QRect oRect(this->geometry());
this->setGeometry(oRect.x(), oRect.y(), m_oPixmap.width(), m_oPixmap.height());
this->updateGeometry();


Просто мне нельзя setFixedSize, потому что по нажатию кнопки она начинает изменяться в размерах до нуля (так задумано)

ЗЫ. Приведенный по той ссылке код у меня заработал только после добавления pEvent->accept() в paintEvent.

Сообщение отредактировал Rocky - 27.1.2010, 23:31
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.11.2024, 11:22