qt 질문 드립니다.

paeksj98의 이미지

어떤식으로 구현을 해야될지 몰라서 질문 드립니다.
환경은 임베디드 환경에 qt 3.3입니다.
단말기 LCD는 흑백이고 해상도는 320*240입니다.

단말기에서 디스플레이된 리스트들에 커서를 위치시켜서 이동을 합니다.
여기서 말하는 커서는 한라인을 통째로 반전시킵니다.
QListViewItem에 msg들은 QString입니다.
item = new QListViewItem(listView, QString, QString, QString);

이부분에서 수정하고 싶은 부분이 240이란 해상도에는 글자를 몇자 못넣습니다.
글자 길이가 길어지면 뒷글자들은 안보입니다. 구현하고 싶은게
글자수가 화면을 넘어가면 이때는 멀티라인으로 나오고 커서(?)가 멀티라인이면
두라인이 동시에 반전되는 기능을 구현하려고 합니다.

지금 문제의 핵심은 총8라인의 화면이 디스플레이 되는데 특정 라인의 특정 QString이
화면을 넘어가는 글자수이면 뒷부분이 안보입니다. 이럴경우 멀티라인으로 나오게 하고 싶습니다.
이때 listView->setCurrentItem(test->itemBelow());, listView->setCurrentItem(change);
이런식으로 라인이 선택되는데 멀티라인을 구현못하고 있네요.
어떤식으로 접근해야할지 조언좀 부탁드립니다.

설명이 잘 이해가 되었으면 좋겠습니다.
어제부터 삽질하는데 적당한 방법을 못찾고 있습니다.

라스코니의 이미지

딱 생각이 드는게

typedef struct {
   QString content;
   bool    isInvert;
} line_T;
 
vector<line_T> Screen;
 
Screen.push_back( <-- "short line", false )
Screen.push_back( <-- "looooooooooooo", false )  // QString 글자수를 세서 일정수가 넘어가면 다음 라인에 넣기
Screen.push_back( <-- "line", false )
 
// 이런식으로 넣어 놓고 8 라인이 넘어가면 앞에서부터 지우기..
// 키보드가 눌릴때 라인 반전은 
Screen[i].isInvert = true;
 
// 그 다음에 다시 그리기.. Refresh 함수는 isInvert가 true 면 그 라인 반전
Refresh(&Screen);

이정도면 되지 않을까요?

paeksj98의 이미지

폰트가 고정 폰트가 아니라서 .이나 폭이 좁은게 들어오면 \n가 엉뚱한 곳에 들어가 보기가 않좋습니다.
답변 감사합니다.

klyx의 이미지

\n이 들어갔을때 줄바꿈이 되었으면 좋겠다는 뜻인가요? 아니면 줄이 길어지면 자동으로 word-wraped 되게 하고 싶다는 뜻인가요?
전자는 http://doc.qt.digia.com/3.3/qlistviewitem.html#setup 에서 setHeight()를 호출해서 높이를 지정해주면 되고, 후자는 직접 아이템을 그리셔야 합니다. http://doc.qt.digia.com/3.3/qlistviewitem.html#paintCell 참고하세요.

paeksj98의 이미지

염치불구하고 간단한 예좀 부탁드려도 될까요.
이것 저것 뒤져서 해보는데 with를 줘도 변화가 없네요.
제가 잘몰라서 그러는것 같은데 도움좀 부탁 드립니다.

klyx의 이미지

paeksj98의 이미지

저한테는 왜 안보였는지 정말 감사합니다.

paeksj98의 이미지

글자 수가 매번 틀리기 때문에 정확한 위치를 찾을수 없습니다.
언어도 한글 영어 등등 여러가지가 쓰이기 때문에 정확한 고정 위치를 알수 없습니다.
답변 감사합니다.
알려주신 방법 한번 적용해보겠습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.