[Qt/Embedded] painter.drawText()의 사용..
글쓴이: resonancme / 작성시간: 화, 2011/07/26 - 11:56오전
rc = fontMetrics().boundingRect(output_str); --> 출력할 스트링의 바운딩렉트를 가져옴 void MyLabel::paintEvent(QPaintEvent *ev) { QPainter painter(this); painter.setPen(pen); int limit = (rc.width())-100; if(limit <= 0) { QPointF p(0,35); painter.drawText(p, in_Text, in_AlignmentH | in_AlignmentV,0); } else { QPointF p(-limit,35); painter.drawText(p, in_Text, in_AlignmentH | in_AlignmentV,0); } }
여기서 질문있습니다. 제가 하려는 것은 QLineEdit 처럼 글자의 출력이 위젯 크기를 넘어가게 되면
커서가 이동하듯이(인터넷 주소창같은..) 입력한 만큼 왼쪽으로 밀리는 효과를 내고 싶습니다. 위의 것은
위젯을 상속받아서 MyLabel의 클래스를 만드는 과정입니다. 그런데 여기서 출력할 스트링의 width()와
drawText함수의 인자 값으로 넘겨준 시작 위치가 기준이 다른것 같습니다.
어떻게 해결해야 할까요;;
Forums:
Qt 소스'를 참고해 보세요.
저 같은 경우는
C:\Qt\2010.05\qt\src\gui\widgets 폴더'에
QLabel QLineEdit 소스파일'이 있습니다.
아마도. 원하시는것은
d->control->moveCursor(d->control->nextMaskBlank(contents.length()));
이런게 아닐까 생각되는데요.
거기보면. 블링크 간격. 드래그드롭. 텍스트마진. 등등... 다양한 함수'가 구현되어있으니.
그대로 복사해서 연습해보시면 좋을 듯 싶습니다.
지금보니
QLineEdit같은 경우는. QWidget을 상속 받았고.
QLabel같은 경우는. QFrame을 상속 받았습니다. 한번 해보세요. ㅇ_ㅇ'''
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
댓글 달기