Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QPushButton - рисовать на кнопке
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
flankerr
Какой есть максимально простой способ вывести картинку на кнопку ?
ViGOur
Например так:
pButton->setIcon( QIcon(":/images/image.png"));
flankerr
Слона то я и не увидел, спаисбо
а елси мне надо чтонить нарисовать, то надо делать производный класс от кнопки или можно как то из "родного" диалога ?
ViGOur
Лучше производный класс от кнопки, и там рисовать.Ты можешь рисовать и в диалоге, но кнопка все свое перерисовывает сама. :)
flankerr
А если отловить сигнал пересовки кнопки из "родного" диалога и в диалоге просто добавить функцию отрисовки ?
ViGOur
думаю, что не стоит... :)
flankerr
просто городить огород с наследованием ради такой мелочи как-то...
ViGOur
Хотя, можно попробовать.

p.s. Просто я сначала не о том подумал, cейчас в MFC ковыряюсь и плююсь... :)
flankerr
Вопрос как выловить?
paintEvent
защищённая функция а сигнала я не нашёл...
trdm
Она же виртуальная. Просто переопредели...
class Q......... : public QWidget
{
    Q_OBJECT
    public:
        Q.........(QWidget *parent = 0);
        virtual ~Q.........();
    protected:
        void paintEvent(QPaintEvent *event);
};
void Q.........::paintEvent(QPaintEvent * /* event */)
{
    QPainter painter(this);
    int v_size_widget =height()-1;        /// вертикальныйц размер виджета
    int h_size_widget =width()-1;        /// горизонтальный  размер виджета

...........
};
flankerr
Цитата(trdm @ 22.2.2008, 15:20) *
Она же виртуальная. Просто переопредели...

Ты не понял сути вопроса...
ТО что она виртуальная не делает её сигналом и не даёт мне возможность обработать сигнал отрисовки В ДРУГОМ объекте
А мне как раз и надо установить обработчик события отрисовки кнопки внутри диалога родителя.
trdm
Цитата(flankerr @ 22.2.2008, 16:10) *
ТО что она виртуальная не делает её сигналом и не даёт мне возможность обработать сигнал отрисовки В ДРУГОМ объекте
А мне как раз и надо установить обработчик события отрисовки кнопки внутри диалога родителя.

Странное хочу. Но тут я тебе не смогу помочь..
trdm
наверное можно попробовать так:
Всетаки переопределить у кнопки paintEvent, а из переопределенного paintEvent-та уже слать сигнал паренту.
Так пойдет? Хотя мне почему то такой подход не нравится.
ViGOur
В полне возможно, что paintEvent дергается из paintEvent родителя для всех дочерних виджетов, без каких либо сигналов.
А виртуальная она на случай, если ты переопределишь класс виджета.

Другими словами, может быть просто сигналов перерисовки нет. :)
flankerr
Цитата(trdm @ 22.2.2008, 16:38) *
наверное можно попробовать так:
Всетаки переопределить у кнопки paintEvent, а из переопределенного paintEvent-та уже слать сигнал паренту.
Так пойдет? Хотя мне почему то такой подход не нравится.


И снова недопонимание сути :)

Задача:
Отрисовать на кнопке ченить БЕЗ создание наследников кнопки (прям из родительского диалога)

Создать наследника секудное дело, но потом это выливается лишнем гемороем. Т.к. форма для быстроты и наглядности была созданы в редакторе форм и каждый раз перписывать что кнопка наследуется от другого класса...

Вообще странно в тех же виндах такого гемора с рисованем нет...
Litkevich Yuriy
Вот сделал ты в дезайнере окно, получил файл foo.ui, сделай еще так:
uic foo.ui -o foo.h

получишь Сишный файл диалога, подкорректируй его, если тебе нужно часто менять рисунок на кнопке, приделай метод который будет устанавливать на кнопку нужную иконку, иконки можешь хранить в нутри исполняемого файла или с наружи, помоему так гараздо быстрее и проще, чем городить огород с обработчиками рисования.
flankerr
Цитата(Litkevich Yuriy @ 22.2.2008, 21:50) *
устанавливать на кнопку нужную иконку, иконки можешь хранить в нутри исполняемого файла или с наружи, помоему так гараздо быстрее и проще, чем городить огород с обработчиками рисования.

Если на кнопке может быть два три изображения тогда да - seticon - и нет проблем, а вот если больше... :rolleyes:
Ну допустим надо кнопку раскрасить в определённый цвет а цвет выбирает пользователь произвольным образом.
ViGOur
Цитата(flankerr @ 26.2.2008, 11:57) *
Если на кнопке может быть два три изображения тогда да - seticon - и нет проблем, а вот если больше...
Да хоть 100. :)
Лучше не полениться и переопределить класс.

Цитата(flankerr @ 26.2.2008, 11:57) *
Ну допустим надо кнопку раскрасить в определённый цвет а цвет выбирает пользователь произвольным образом.
Создаешь метод setColor в производном классе кнопки и все.
flankerr
Ну нафига мне в сотый раз говрить про наследников... Производный класс в моём случае это ГЕМОР.
Мне проще идею по другому реализовать чем производный класс лепить.
Всётаки в виндах это более человечно сделано.
trdm
Цитата(flankerr @ 26.2.2008, 18:54) *
Всётаки в виндах это более человечно сделано.

да, винда это отличная графическая библиотека. без сомнения :)
Гость
понаследуй от кнопки класс и сделай плагин к дизайнеру. и разбрасывай свою цветную кнопку в дизайне сколько влезет [~del by admin]
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.