이미지 버튼
저장소/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 |