2009-09-25 6 views
0

QAction에 투명 아이콘을 설정하려고하는데, 그러면 메뉴와 툴바에 추가됩니다. 스타일 시트를 사용하여 응용 프로그램의 스타일을 지정합니다. 아이콘 투명도는 작동하지만 아이콘의 왼쪽 및 위쪽 가장자리에 1px 검은 색 테두리가있는 모양으로 도구 막대에 아이콘이 그려집니다.툴바의 투명 아이콘이 추한 테두리를 그립니다.

이제 내 모든 아이콘은 하나의 큰 이미지 파일 (투명도가있는 PNG)에 저장되며 하나의 큰 스트립에 저장됩니다. 하나의 QIcon로를 추출하려면,이 작업을 수행합니다

// load icon strip: 
QPixmap large; 
large.load(":/icons/tb_icons_l.png", "PNG", Qt::OrderedAlphaDither); 
QSize largeSize(large.width()/ICON_COUNT, large.height()); 

// create individual icon pixmap 
QPixmap iconLarge(largeSize); 
// fill with transparent pixels: 
iconLarge.fill(QColor(0,0,0,0)); 
// copy pixel data from icon strip to image: 
{ 
    QPainter p(&iconLarge); 
    p.setBackgroundMode(Qt::TransparentMode); 
    p.drawPixmap(0,0,large, largeSize.width() * i, 0, largeSize.width(), largeSize.height()); // 'i' is the icon index. 
} 

return QIcon(iconLarge); 

나는 문제가 내가 대신 모두가 완벽하게 작동하지 않습니다 (더 검은 색 테두리) 개별 파일에서 아이콘을로드 할 때부터 위의 몇 줄 알고있다.

다른 사람이 전에 본 것과 같은 것을 본 사람이 있습니까? 누구나보기 흉한 검은 색 테두리를 제거하는 몇 가지 변경 사항을 제안 할 수 있습니까? 테두리는 도구 모음 단추 자체의 일부가 아니라 이미지의 일부입니다.

답변

1

우선, 저는 당신이 불필요하게 복잡한 방식으로 모든 것을 하나의 이미지에 담아서 작업하고 있다고 생각합니다. 그러나 ...

Qt의 어떤 버전을 실행하고 있습니까? 어떤 플랫폼에서? 약 6-12 개월 전 한 시점에서 (QPixmaps) 다른 투명한 이미지 위에 하나의 투명한 이미지를 그리는 버그가 발생했습니다. 일부 픽셀은 다른 색으로 변했지만, 내가 말할 수있는 한 무작위로 나타났다. 이것은 Linux에서 Qt4.4 또는 4.5 (기억이 안남)입니다. 어느 것이 든간에 나는 버그 보고서를 제출했고 회귀로 인정되어 다음 버그 수정 릴리즈에서 수정되었습니다. 즉, 최신 버전으로 실행하지 않으면 최신 버전으로 업데이트하는 것이 좋습니다. 해결 방법은 QImage에 그 다음 필요한 경우 QPixmap으로 변환합니다.)

또는 색인 생성을 제거한 테스트를 시도해 볼 수 있습니다. 당신이 당신의 코드를 간소화하고 여전히 문제를 재현 할 수 있는지보기 위해 화가의 크기.

+0

저는 Linux에서 최신 Qt 4.5를 실행하고 있습니다. – Thomi

+0

감사합니다. 당신이 옳았습니다. 내가 보지 못했던 새로운 버그 수정 릴리즈가있었습니다. 업데이트로 문제가 해결되었습니다. 건배! 최소한 내 코드는 탓할 필요가 없었습니다! – Thomi

관련 문제