Qt에서 크기가 고정 된 크기 조정이 불가능한 QDialog?
Qt 대화 상자 응용 프로그램이 있습니다. 이제 해당 대화 상자의 크기를 조정할 수 없습니다. 이것을 달성하는 방법을 잘 모르겠습니다. 나는 많은 것을 시도했지만 여전히 대화 상자가 시작될 때이 대화 상자의 크기를 조정할 수 있습니다.
대화 상자 / 위젯 크기 조정을 사용하지 않도록 설정해야하는 속성은 무엇입니까?
나는 또한 시도했다
setSizePolicy(QSizePolicy::Fixed);
그런데 ..
source \ nimcac_settingsMain.cpp (36) : 오류 C2248 : ** 'QSizePolicy :: QSizePolicy': 'QSizePolicy'클래스에 선언 된 개인 멤버에 액세스 할 수 없습니다. ** p : \ ThirdPartyExports \ Qt \ export \ 4.3 \ 4.3.1f14 \ include \ QtGui \ ../../ src \ gui \ kernel \ qsizepolicy.h (177) : 'QSizePolicy :: QSizePolicy'선언 참조 p : \ ThirdPartyExports \ Qt \ export \ 4.3 \ 4.3.1f14 \ include \ QtGui \ ../../ src \ gui \ kernel \ qsizepolicy.h (34) : 'QSizePolicy'선언 참조
친절하게 도와주세요.
이미 시도했는지 모르겠지만 QWidget::setFixedSize
원하는대로해야합니다
당신이 전달하려고하기 때문에 당신이 얻을 컴파일 에러는 QSizePolicy::Policy
에 setSizePolicy(QSizePolicy)
있지만로부터 암시 적 변환이 없습니다 QSizePolicy::Policy
에 (하나 개의 차원에 대한 정책) QSizePolicy
(클래스가 다른 것들 사이에 포함되어, 하나의 Policy
차원 당이 (높이, 폭)) . QSizePolicy
어쨌든 최상위 위젯 (창)에서는 작동하지 않습니다.
setFixedSize()
대화 상자의 크기를 미리 알고있는 경우에만 작동합니다 (일반적으로 글꼴 크기와 언어를 변경하는 경우). 넌 할 수있어
window()->setFixedSize( window()->sizeHint() );
하지만 사용하는 것이 훨씬 낫습니다
window->layout()->setSizeConstraint( QLayout::SetFixedSize );
그러면 레이아웃이 대화 상자의 크기를 결정할 수 있지만 크기 조정을 허용하지 않습니다.
this->setFixedSize(this->width(),this->height());
대화 상자의 windowFlags를 변경하고 Qt :: MSWindowsFixedSizeDialogHint로 설정해야합니다.
이것은 Windows에서만 작동합니다 .
자세한 내용은 다음 예제를 참조하십시오. http://doc.qt.digia.com/4.5/widgets-windowflags.html
QtCreator를 사용하는 경우 (물론 그렇습니다) HorizontalsizePolicy 속성을 fixed로, Vertical Policy도 Fixed로 설정할 수 있습니다. 그런 다음 maximumSize를 원하는 치수로 설정할 수 있습니다. 창이 다시 최대화되지 않습니다.
QT Creator의 UI 편집기에서 속성 창에서 맨 위 개체를 클릭 한 다음 레이아웃 부분에서 맨 아래로 스크롤합니다. layoutSizeConstraint 속성이 표시되어야합니다.
(가) 설정 layoutSizeConstraint
에 SetFixedSize
.
코드에서 다음과 같이 할 수 있습니다.
Dialog->resize(581, 292);
QSizePolicy sizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(WaterLevelEditorDialog->sizePolicy().hasHeightForWidth());
Dialog->setSizePolicy(sizePolicy);
Dialog->setMinimumSize(QSize(581, 292));
Dialog->setMaximumSize(QSize(581, 292));
Dialog->setSizeGripEnabled(false);
QtCreator에서 다음과 같이하십시오.
- 대화 상자 위젯 선택
- 개체 창에서 대화 상자 위젯을 찾습니다.
- 개체 창에서 대화 상자 개체를 마우스 오른쪽 버튼으로 클릭하면 메뉴가 나타납니다.
- 메뉴에서 "크기 제한"-> "최대 크기 설정"을 선택합니다.
- 대화 상자 개체를 다시 마우스 오른쪽 버튼으로 클릭하면 메뉴가 팝업됩니다.
- "크기 제한"-> "최소 크기 설정"을 선택합니다.
- 속성 창에서
- "sizePolicy"-> "Horizontal Policy"에 "Fixed"값이 있는지 확인합니다.
- "sizePolicy"-> "Vertical Policy"에 "Fixed"값이 있는지 확인합니다.
- "sizeGripEnabled"가 선택되지 않았는지 확인하십시오.
Qt 문서에서 setSizePolicy()
메서드는 인수가 없거나 두 개이지만 하나의 인수가 될 수는 없습니다. 이것이이 컴파일 오류가 발생하는 이유입니다. 내 실험에서 고정 크기를 설정하지 않으면. 이 방법은 소용이 없습니다. 창은 여전히 크기를 조정할 수 있습니다.
In case you are designing UI in QML and launching using QDeclarativeView, try the below code.
QScopedPointer<QmlApplicationViewer> viewer(QmlApplicationViewer::create());
.
.
.
//To make the window non-resizable
viewer->setFixedSize(viewer->width(),viewer->height());
Here QmlApplicationViewer is derived from QDeclarativeView.
참고URL : https://stackoverflow.com/questions/696209/non-resizeable-qdialog-with-fixed-size-in-qt
'developer tip' 카테고리의 다른 글
구분 기호는 영숫자 또는 백 슬래시 및 preg_match가 아니어야합니다. (0) | 2020.11.03 |
---|---|
dpkg-reconfigure tzdata에 대한 비대화 형 방법 (0) | 2020.11.03 |
Android 툴바 다른 조각에 대한 메뉴 항목 추가 (0) | 2020.11.03 |
알파벳을 열거하는 가장 빠른 방법 (0) | 2020.11.03 |
getLastKnownLocation이 null을 반환합니다. (0) | 2020.11.03 |