문제

QT 대화 상자 응용 프로그램이 있습니다. 이제 나는 그 대화 상자를 재개 할 수 있기를 원하지 않습니다. 이것을 달성하는 방법을 잘 모르겠습니다. 나는 많은 것을 시도했지만 대화 상자가 시작될 때이 대화 상자가 크기를 조정할 수 있습니다.

대화 상자/위젯 크기 조정을 비활성화하기 위해 설정 해야하는 속성은 무엇입니까?

나는 또한 시도했다

setSizePolicy(QSizePolicy::Fixed);

하지만 오류가 발생합니다 ..

source\nimcac_settingsMain.cpp(36) : error C2248:
**'QSizePolicy::QSizePolicy' : cannot access private member declared in class 'QSizePolicy'**
        p:\ThirdPartyExports\Qt\export\4.3\4.3.1f14\include\QtGui\../../src\gui\
kernel\qsizepolicy.h(177) : see declaration of 'QSizePolicy::QSizePolicy'
        p:\ThirdPartyExports\Qt\export\4.3\4.3.1f14\include\QtGui\../../src\gui\
kernel\qsizepolicy.h(34) : see declaration of 'QSizePolicy'

친절하게 도와주세요.

도움이 되었습니까?

해결책

이미 시도했는지 모르겠지만 QWidget::setFixedSize 원하는대로해야합니다

다른 팁

당신이 얻는 컴파일 오류는 당신이 통과하려고하기 때문입니다. QSizePolicy::Policy 에게 setSizePolicy(QSizePolicy), 그러나 암시 적 변환은 없습니다 QSizePolicy::Policy (1 차원에 대한 정책) QSizePolicy (무엇보다도 하나는 Policy 치수 당 (높이, 너비)). QSizePolicy 어쨌든 최상위 위젯 (Windows)에서는 작동하지 않습니다.

setFixedSize() 대화 상자의 크기를 미리 알고있는 경우에만 작동합니다 (일반적으로 글꼴 크기와 언어가 변경되는 것). 넌 할 수있어

window()->setFixedSize( window()->sizeHint() );

그러나 사용하는 것이 훨씬 낫습니다

window->layout()->setSizeConstraint( QLayout::SetFixedSize );

이는 레이아웃이 대화 상자의 크기를 결정할 수 있지만 크기 조정을 허용하지 않으며, 내가 요구했던 것이라고 가정합니다.

this->setFixedSize(this->width(),this->height());

대화 상자의 Windowflags를 변경하여 qt :: mswindowsfixedsizeialoghint로 설정해야합니다.

이것은 Windows에서만 작동합니다.

자세한 내용은이 예를 참조하십시오.http://doc.qt.digia.com/4.5/widgets-windowflags.html

QTCreator를 사용하는 경우 (물론 귀하는) 속성 HorizOntalSizePolicy를 고정 및 수직 정책으로 고정하여 고정 할 수 있습니다. 그런 다음 최대 규모를 원하는 치수로 설정할 수 있습니다. 창이 다시 극대화되지 않습니다.

QT Creator의 UI 편집기에서 속성 창의 상단 객체를 클릭 한 다음 레이아웃 부분의 하단을 스크롤하십시오. 레이아웃 시즈 세인트 속성이 표시되어야합니다.

설정 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에서 다음과 같이

  1. 대화 상자 위젯을 선택하십시오
  2. 객체 창에서 대화 상자 위젯을 찾습니다
  3. 객체 창에서 대화 상자 개체를 마우스 오른쪽 버튼으로 클릭하여 메뉴를 팝업하십시오.
  4. 메뉴에서 "크기 제약 조건" -> "최대 크기 설정"을 선택하십시오.
  5. 대화 상자 개체를 다시 마우스 오른쪽 버튼으로 클릭하여 메뉴를 팝업하십시오.
  6. "크기 제약 조건" -> "최소 크기 설정"을 선택하십시오.
  7. 속성 창에서
    • "sizepolicy"-> "수평 정책"은 "고정"가치가 있는지 확인하십시오.
    • "sizepolicy"-> "수직 정책"은 "고정"가치가 있는지 확인하십시오.
    • "sizegripenabled"가 확인되지 않았는지 확인하십시오

QT 문서에서 setSizePolicy() 메소드는 제로 인수 또는 두 개의 인수를 취하지 만 하나의 인수가 될 수는 없습니다. 그렇기 때문에이 컴파일 오류가 발생합니다. 내 실험에서 고정 크기를 설정하지 않으면. 이 방법은 쓸모가 없습니다. 창을 여전히 재판용 할 수 있습니다.

QML에서 UI를 설계하고 qdeclarativeView를 사용하여 시작하는 경우 아래 코드를 사용해보십시오.

QScopedPointer<QmlApplicationViewer> viewer(QmlApplicationViewer::create());
.
.
.
//To make the window non-resizable
viewer->setFixedSize(viewer->width(),viewer->height());

여기서 qmlapplicationViewer는 qdeclarativeView에서 파생됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top