QT 애플리케이션에서 아이콘 이미지 모양의 단추를 갖고 싶습니다. 알파 채널을 사용하여 사용 된 이미지 (.png)에서 마스크를 가져 와서 버튼 마스크를 설정하려고합니다.Qt 위젯 마스크 설정
QPushButton button();
QPixmap pixmap("image_path.png");
QIcon icon(pixmap);
button.setIcon(icon);
button.setMask(pixmap.createMaskFromColor(Qt::transparent,Qt::MaskInColor));
결과는 버튼이 사라집니다 것을 : 여기
는 관심의 코드 라인이다!
일부 테스트를 수행하면 마스크가 올바로 작성되었음을 확신 할 수 있습니다. 실수는 어디에서 발생합니까?
이처럼 알파와 .PNG를 사용하는 경우
정확한 코드인가요? 위의 코드는 여러분이 스택에'QPushButton'을 생성했다는 것을 암시합니다 (범위를 벗어난 참조가 삭제 된 후에 바로 제거하지 않으려면'new'해야합니다). 또한 버튼에 부모 QWidget을 지정하지 않았습니다. – sjwarner
안녕하세요 sjwarner, 답장을 보내 주셔서 감사합니다! 내가 작성한 코드는 내 애플리케이션에서 사용한 코드가 아닙니다. 버튼은 클래스의 private 멤버로 정의 된 QPushButton 포인터에서 만들어지며, 문제를보고하기 위해 여기에이 라인을 썼습니다. 그러나이 경우 버튼, 픽스맵 및 아이콘이 모두 스택에 할당되어 있지만 즉시 파손되지 말고 범위가 끝나야합니다 ... –
방금 .png 원형을 사용하여 단추 그림을 변경하려고했습니다. 붉은 색의 투명한 배경에 나는 모양이 정말 이상하고 삼각형 모양의 마스크를 가지고있어서 문제는 코드가 아니라 crateMask() 함수가 어떻게 작동하는지에 달려 있다고 생각합니다. 사용자 정의 모양의 단추를 얻는 다른 방법이 있습니까? createMask() 및 createEhuristicMask() 함수를 사용하는 다른 예제를 찾았지만이 두 번째 것은 내 응용 프로그램에서 작동하지 않습니다 ... –