Название: QPushButton и background Отправлено: PsM от Август 23, 2007, 10:32 Qt 4.3
наследую от QPushButton. нужно менять цвет background-а и иконку в зависимости от isChecked(). Как лучше делать ? пробовал в paintEvent : с иконкой все ок... а вот бэкгроунд отрисовываеться только в состоянии Checked вот код: Код: MyButton::MyButton( const QString & text, QWidget *parent) И еще, в состоянии Checked цвет бакгроунда он использует не QPalette::Button в чистом виде, а немного затемняет - это можно побороть ? Название: Re: QPushButton и background Отправлено: Emc от Август 23, 2007, 12:55 кстати зачем ты в paintEvent полез - проше не писать новый класс, а повесить слот на сигнал clicked ( bool checked = false )
Код: myPalette = pushButton->palette(); Название: Re: QPushButton и background Отправлено: Mike от Август 23, 2007, 13:09 кстати зачем ты в paintEvent полез - проше не писать новый класс, а повесить слот на сигнал clicked ( bool checked = false ) Можно и так.Код: myPalette = pushButton->palette(); но если уж действительно нужно отнаследовать от QPushButton, то можно переписать virtual void checkStateSet (), а в ней Код: myPalette = palette(); Название: Re: QPushButton и background Отправлено: PsM от Август 23, 2007, 13:21 кстати зачем ты в paintEvent полез - проше не писать новый класс, а повесить слот на сигнал clicked ( bool checked = false ) Я наследую из других соображений - нужен свой widget.Код: myPalette = pushButton->palette(); и еще вопрос... ссори, прошу если что не бить, я только осваиваю Qt... почему у меня не получаеться сделать QIcon, ни статическим, ни обычным мембером моего виджета ? (Program received signal SIGABRT (Aborted)) счас у меня Код: void MyButton::paintEvent ( QPaintEvent * event ) Как принято делать ? Название: Re: QPushButton и background Отправлено: Mike от Август 23, 2007, 13:32 можно сделать так:
Код: void MyButton::paintEvent ( QPaintEvent * event ) или Код: // Файл MyButton.h а в paintEvent пользоваться icon Название: Re: QPushButton и background Отправлено: PsM от Август 23, 2007, 14:21 Можно и так. Только счас заметил про checkStateSet :( ...но если уж действительно нужно отнаследовать от QPushButton, то можно переписать virtual void checkStateSet (), а в ней пропробовал - checkStateSet - почемуто не вызываеться :( ... Название: Re: QPushButton и background Отправлено: Mike от Август 23, 2007, 14:42 Да, действительно checkStateSet почему-то не вызывается.
Тогда можно через переопределение nextCheckState, я проверил - работает: Код: void MyButton::nextCheckState() |