Russian Qt Forum

Qt => QSS => Тема начата: slava_d200 от Декабрь 21, 2011, 02:08



Название: как картинку поместить на всю кнопку
Отправлено: slava_d200 от Декабрь 21, 2011, 02:08
люди помоги.
как сделать так чтобы картинка которая я размещаю накнопке занимала
все пространство кнопки
пытаюсь сделать так - ничего не получается

class MyButtonBitmap : public QPushButton
{
    Q_OBJECT
public:
    explicit MyButtonBitmap(QWidget *parent = 0){
    };
protected:
     virtual void resizeEvent(QResizeEvent *event)
    {
        QPixmap pix;
        pix.load(":users");
        pix.size().scale(event->size(),Qt::KeepAspectRatio);
        setIcon(pix);
        setIconSize(pix.size());
    }
};


Название: Re: как картинку поместить на всю кнопку
Отправлено: popper от Декабрь 21, 2011, 09:47
Может так:
Код:
QBrush brush;
brush.setTexture(myPixmap);
QPalette palette ( myPushButton.palette() );
palette.setBrush(QPalette::Window, brush);
myPushButton.setPalette(palette);


Название: Re: как картинку поместить на всю кнопку
Отправлено: lighting от Декабрь 21, 2011, 10:18
setStyleSheet("border-image: url(:/имя_картинки.тип) stretch;");


Название: Re: как картинку поместить на всю кнопку
Отправлено: slava_d200 от Декабрь 21, 2011, 21:57
по решению: popper  - не прокатило кнопка заполняется множеством картинок.
т.е если картинка по размеру маленькая то на кнопки в качестве фона будет их много.
    
по решени: lighting - картинка увеличилась по размеру  кнопки. в принципе вопрос решило
но теперь видно только эту картинку и не скажешь что эта кнопка.


спасибо за подсказки!!!


Название: Re: как картинку поместить на всю кнопку
Отправлено: popper от Декабрь 21, 2011, 22:54
картинку можно сначала растянуть, вызвав
Код:
QPixmap::scaled(...)


Название: Re: как картинку поместить на всю кнопку
Отправлено: iroln от Декабрь 21, 2011, 23:00
А использовать QToolButton вместо QPushButton не прокатит? :)

(http://lostpic.net/thumbs/25358754866c99a53a8cd9ccea5e3963.png) (http://lostpic.net/?photo=623783)


Название: Re: как картинку поместить на всю кнопку
Отправлено: slava_d200 от Декабрь 21, 2011, 23:07
QToolButton прокатил тока если картинка большая.
т.е. если кнопку делать меньше размера картинки картинка тоже сжимается.
если кнопку расширять то картинка тоже расширяется.
но как тока размер кнопки превышает размер картинки картинка перестает увеличиватся


Название: Re: как картинку поместить на всю кнопку
Отправлено: slava_d200 от Декабрь 21, 2011, 23:08
пробывал ничего не получается
картинку можно сначала растянуть, вызвав
Код:
QPixmap::scaled(...)


Название: Re: как картинку поместить на всю кнопку
Отправлено: iroln от Декабрь 22, 2011, 06:27
Можно в resizeEvent вызывать метод setIconSize и устанавливать размер иконки, соответствующий текущему размеру кнопки.


Название: Re: как картинку поместить на всю кнопку
Отправлено: slava_d200 от Декабрь 22, 2011, 09:50
Самое первое сообщение посмотрите. Вы это имели ввиду.
Такая конструкция почемуто не катит (не работает)
Можно в resizeEvent вызывать метод setIconSize и устанавливать размер иконки, соответствующий текущему размеру кнопки.


Название: Re: как картинку поместить на всю кнопку
Отправлено: iroln от Декабрь 22, 2011, 20:40
Не знаю, почему у тебя не работает масштабирование иконки. Написал вот такой код, он работает, картинку растягивает на всю кнопку, естественно замыливает, если картинка маленького размера, потому что интерполяция:

Код
Python
class TestButton(QToolButton):
 
   def resizeEvent(self, event):
 
       sz = event.size()
 
       pix = QPixmap(u'2rightarrow-256.png')
       pixx = pix.scaled(sz, Qt.KeepAspectRatio)
 
       self.setIcon(pixx)
       self.setIconSize(sz)
       pass
 
   pass
 
 


Название: Re: как картинку поместить на всю кнопку
Отправлено: lighting от Декабрь 23, 2011, 10:07
по решени: lighting - картинка увеличилась по размеру  кнопки. в принципе вопрос решило
но теперь видно только эту картинку и не скажешь что эта кнопка.
Так вы помнится и просили чтобы картинка занимала все пространство кнопки. Если это не так то setIcon подходящий вам вариант. Ну а размеры надо менять используя resize и setIconSize, подробнее не скажу т.к. мне ваша задача пока-что не ясна.