Qt GUI 디자인을 OS 별로 따로 해야하나요?

superkkt의 이미지

리눅스에서 Qt creator를 사용해서 UI 폼을 디자인 했습니다. 그리고 이걸 윈도우와 맥에 가져가서 다시 Qt creator로 컴파일을 해봤는데요. 윈도우에서는 자동으로 Vista look and feel을 사용해서 버튼 등을 보여주는데요. 맥에서는 리눅스에서 보이던 그대로 안 예쁘게(맥 스타일이 아닌) 보이네요.

그래서 맥에서 직접 UI 폼을 만들어보니 거기에는 맥 스타일대로 버튼 등이 만들어지더군요. 저는 Qt가 자동으로 해당 OS의 look and feel을 적용하는 줄 알았는데요. 다른 OS(여기서는 리눅스)에서 만든 폼을 가져와서 컴파일하니 안 되는 경우가 있네요.

혹시 제가 빠뜨린 부분이 있나요? 아니면 OS 별로 폼 디자인을 따로 만들어줘야 하는건가요?

semmal의 이미지

------------------------------
How many legs does a dog have?

superkkt의 이미지

답변 감사합니다. 그런데 알려주신대로 스타일을 맥으로 지정해도 변화가 없네요. 현재 맥에서 컴파일을 하기 때문에 별도로 스타일을 지정하지 않아도 자동으로 되는게 정상인것 같은데요. 리눅스에서 가져온 폼에 뭔가 커스마이징된 부분이 있어서 그런지 잘 안되네요.

======================
BLOG : http://superkkt.com

emptynote의 이미지

본문글과 다른 주제이지만 자바 swing도 리눅스, 윈도 환장합니다.

가장 큰 장벽은 폰트 인것 같습니다.
- 리눅스에서는 상용 폰트가 없고, 윈도에서는 공개 폰트가 없지요.
즉 디폴트 폰트시 각 OS마다 다른 폰트를 보여주게 됩니다.
- 설사 동일 폰트라고 해도 폰트를 보여주는 엔진?이 다르기 때문에 다르게 느껴집니다.

자바 swing에서는 free layout?인가 그거로 하면 위치및 고정 크기를 지정한데로 동작하는데,

이 경우 이 폰트 문제는 매우 골치 거리입니다.

고정 크기를 갖기에 OS마다 달라지는 폰트에 따라서 다 보여줄수있기도 하고 없기도 하거든요.

넷빈즈에서 제공하는 GUI builder상 개인적으로 가장 선호하는 layout인데,

제가 요새 GTKMM을 공부하다가 보니 좌표 지정 메소드도 없고 크기도 최소 지정이라

어쳐구니 없더군요. 하지만 곰곰히 생각해 보니

자바 swing 에서 제가한 실수 즉 잘못된 layout인 free layout이 왜 문제가 되는지 이해가 팍팍 되네요.

Netbeans를 사용하여 GUI 디자인 하시는분들은 주의하셔야 합니다. 저 처럼 피 봐요.

semmal의 이미지

최초에 개발한 리눅스에서 Motif와 CDE를 변경해서 변경되어진다면, 윈도즈나 맥에서도 같은 효과를 발휘할거라 예상할 수 있습니다.

만약 변경되지 않는다면, 코드내에서 각 위젯에 스타일이 따로 적용되어 있거나, 따로 스타일시트를 이용한다는 뜻일 것 같군요.

ui는 그냥 text 파일입니다.

아무 텍스트에디터로 열어보시면 어떻게 정의되어 있는지 확인할 수 있습니다.

------------------------------
How many legs does a dog have?

superkkt의 이미지

다시 여러 환경에서 테스트를 해보니 버튼에 아무런 속성을 지정하지 않는 경우는 어떤 OS에서 UI를 만들어도 각각의 OS 네이티브 룩앤필로 잘 보이는군요.

그런데 버튼의 최소 사이즈를 지정하니 본문과 같은 문제가 생기네요. 이게 스타일을 적용한걸로 처리되어서 나타나는 정상적인 결과인건가요?

======================
BLOG : http://superkkt.com

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.