이미지 버튼
저장소/QtQPushButton에 이미지 올리기와 enter/leave/press/release event에서의 이미지 변경.
class button : public QPushButton { ... void setImage(QPiaxmap& _pixmap) { QSize size; size.setWidth(_pixmap.width() / 4); size.setHeight(_pixmap.height()); m_icons[Normal] = (QIcon(_pixmap.copy(Normal * size.width(), 0, size.width(), size.height()))); m_icons[Click] = (QIcon(_pixmap.copy(Click * size.width(), 0, size.width(), size.height()))); m_icons[Highlight] = (QIcon(_pixmap.copy(Highlight * size.width(), 0, size.width(), size.height()))); m_icons[Disable] = (QIcon(_pixmap.copy(Disable * size.width(), 0, size.width(), size.height()))); if(isEnabled()) setIcon(m_icons[Normal]); else setIcon(m_icons[Disable]); setIconSize(m_size); resize(m_size); } virtual void enterEvent(QEvent* _event) { __super::enterEvent(_event); if(isEnabled()) setIcon(m_icons[Highlight]); } virtual void leaveEvent(QEvent* _event) { __super::leaveEvent(_event); if(isEnabled()) setIcon(m_icons[Normal]); } virtual void mousePressEvent(QMouseEvent* _event) { __super::mousePressEvent(_event); if(isEnabled()) setIcon(m_icons[Click]); } virtual void mouseReleaseEvent(QMouseEvent* _event) { __super::mouseReleaseEvent(_event); if(isEnabled()) setIcon(m_icons[Highlight]); } virtual void changeEvent(QEvent* _event) { __super::changeEvent(_event); if(QEvent::EnabledChange != _event->type()) return; if(isEnabled()) setIcon(m_icons[Normal]); else setIcon(m_icons[Disable]); } };
와.. vector<QIcon> m_icons; 요거 쓸라니까 syntaxhighlighter에서 </qicon>을 붙여버리네 ㅡ,.ㅡ
버튼 이미지는 연속된 4개의 이미지가 하나의 파일로 제작되었을 때를 가정,
m_icons는 vector<QIcon>으로 size는 4로 미리 정의.
'저장소 > Qt' 카테고리의 다른 글
Drop Shadow Effect (0) | 2013.11.19 |
---|---|
QImage, QPixmap의 loadFromData, bitmap image header, resource dll (0) | 2013.10.30 |
widget 프레임 제거와 배경 투명화 (0) | 2013.10.30 |
프로세스 실행경로 확인 (0) | 2013.10.30 |
Qt 커뮤니티 및 블로그, 버그 (0) | 2013.09.06 |