[완료] Qt QScrollArea에서 widget의 크기를 자동 조절하는데에 대한 질문입니다.

song9063의 이미지

안녕하세요?
QScrollArea에 대한 질문입니다.
QVBoxLayout으로 묶여진 여러개의 widget들을 포함하는 workWidget을
스크롤바를 이용하여 나타낼려고 QScrollArea를 사용했습니다.
그런데 workWidget이 포함하고 있는 widget들의 크기가 자동으로 화면 크기에 맞게 줄어듭니다.
작성한 코드는 아래와 같습니다.
QScrollArea내에서 widget들의 원본 크기로 이용할려면
setSizePolicy()를 어떻게 설정해야 할지 질문드립니다.
widget들은 수직방향으로 여러개가 정렬되어져 있고
한 화면에 전부 표시 되는 것을 원하지 않으며 오직 스크롤바를 통하여
나타낼려고합니다.

  scrollArea = new QScrollArea;
  scrollArea->setBackgroundRole(QPalette::Dark);
  scrollArea->setWidgetResizable(true);
  scrollArea->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Ignored);
 
  workWidget = new SNCWorkWidget(profileWidget, this);
 
  scrollArea->setWidget(workWidget);
klara의 이미지

scrollArea->setWidgetResizable(true);
이것을 true로 하고 계신데, 그러면 scrollArea가 알아서 내부 위젯의 크기를 조절하게 됩니다. false(디폴트값)으로 하셔야 합니다.

scrollArea->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Ignored);
scrollArea자체의 size policy는 내부위젯의 크기와 상관이 없습니다.
내부 위젯(workWidget)의 size policy를 조절해야합니다.

song9063의 이미지

지적하신 것과 같이 내부 위젯의 policy를 수정하여 해결했습니다.
답변 감사드립니다.

안녕하세요?

song9063의 이미지

Policy를 수정하여.. 내부위젯의 크기가 변경되는 점은 해결을 했습니다.
첨부 그림처럼 여러개의 QTableWidget들이 QVBoxLayout으로 엮여져있습니다.

setSpacing(0), setMargin(0) 이렇게 0으로 줬는데도 첨부처럼 위젯간의 간격이 벌어지네요.
layout에 관해서는 아직 이해가 잘 가지않아 헤메고 있네요..
제가 가지고 있는 책에서도 아주 자세히 나와있는 것 같지도 않고요.. 제가 이해력이 부족한건지.;;

아래에서(적색 표시 부분) 위젯 간의 간격을 최대한 줄이려고 합니다.
어떤 방식으로 적용하는지 한 번더 답변을 부탁 드려봅니다.

댓글 첨부 파일: 
첨부파일 크기
Image icon snapshot1.png61.46 KB

안녕하세요?

klara의 이미지

setSpacing(0)이랑 setMargin(0)으로 될텐데요...-_-;;
샘플코드

#include <QtGui>
 
int main(int argc, char **argv) {
	QApplication app(argc, argv);
	QScrollArea area;
	QVBoxLayout *vbox = new QVBoxLayout;
	vbox->addWidget(new QTableWidget);
	vbox->addWidget(new QTableWidget);
	vbox->addWidget(new QTableWidget);
	vbox->setSpacing(0);
	vbox->setMargin(0);
	area.setLayout(vbox);
	area.show();
	return app.exec();
}

실행 결과(첨부파일)
댓글 첨부 파일: 
첨부파일 크기
Image icon layouttest.png9.16 KB
morgana의 이미지

해결 하셨는지 모르겠지만...

layoutSpacing 값을 조절해보세요. 디폴트값이 -1이던걸로 기억됩니다.

0으로값을 바꾸고 나면 딱 붙던걸로 기억되네요.

=======================================
아프다...

=======================================
.

댓글 달기

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