2014-05-23 7 views
0

QWidget :: setMask()를 사용하여 사용자 정의 모양 QLineEdit을 만들려고합니다. 내 하위 클래스 라인 편집을 위해 resizeEvent를 재정의했다.qt 변경 QLineEdit shape

void MyLineEdit::resizeEvent(QResizeEvent *ev) 
{ 
    QPixmap pixmap(":/new/prefix1/region.png"); 
    setFixedSize(ev->size()); 
    setMask(pixmap.mask()); 
    setStyleSheet("background-color : gray"); 
} 

그러나 QlineEdit는 표시되지 않습니다. Btw, QGridlayout에 추가되었고 pixmap.isNull() = false이고 크기가 정상인지 확인했습니다. 내가 뭔가를 놓쳤습니까? 왜 표시되지 않습니까?

+1

http://qt-project.org/doc/qt-4.8/qwidget.html#resizeEvent "어떤 도면 (또는해야한다)이 내부에서 수행 할 필요가 없다 매니저.". Try :: paintEvent() – friendzis

답변

1

아무 것도 서브 클래 싱 할 필요가 없습니다. style sheets을 사용해주세요.

editor->setStyleSheet("QLineEdit {\n" 
         " background: url(:/new/prefix1/region.png);\n" 
         "}"); 

또는 based on documentation :

editor->setStyleSheet("QLineEdit {\n" 
         " border-image: url(:/new/prefix1/region.png) 3 3 3 3;\n" 
         "}"); 
+0

답해 주셔서 감사합니다. 그것은 잘 작동하지만 100 %는 아닙니다. 내 업데이트를 참조하십시오. –

+0

Ty 문제가 해결되었습니다. –