crossplatform.ru

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

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


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

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

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




Репутация:   7  


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

Заранее огромное спасибо за любой совет!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 26.1.2010, 21:29
Сообщение #2


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


Цитата
void QWidget::setMask ( const QBitmap & bitmap )



кнопка в виде заданного изображения

Сообщение отредактировал igor_bogomolov - 26.1.2010, 21:31
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.1.2010, 21:54
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Ещё могу дать чуточку правленные исходники AeroButton:
Прикрепленный файл  AeroButton.zip ( 4,32 килобайт ) Кол-во скачиваний: 279


там не столько с формой эксперимент, но может пригодится, просто фетишь всякий на кнопке.
Это с QtCentre взято
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 26.1.2010, 22:00
Сообщение #4


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

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

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




Репутация:   7  


Спасибо ребята!!! =)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 27.1.2010, 23:30
Сообщение #5


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

Группа: Участник
Сообщений: 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
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 28.1.2010, 1:03
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(Rocky @ 28.1.2010, 2:30) *
потому что по нажатию кнопки она начинает изменяться в размерах до нуля (так задумано)
может в этом месте и проблема?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 28.1.2010, 1:25
Сообщение #7


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


Rocky, выкладывай компилируемый пример
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 28.1.2010, 9:50
Сообщение #8


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

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

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




Репутация:   7  


Цитата
может в этом месте и проблема?

Вероятно да, в месте изменения размеров стояла тоже setGeometry. Заменил ее на setFixedSize и проблема решилась. Просто это было ночью и отписать что все ок уже не было сил (
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 29.11.2024, 1:56