2012-08-30 2 views
4

QT를 공부하기 시작했습니다.QMainWindow에서 QT 4.8 패딩

enter image description here

가 어떻게이 틈을 끌 수 있습니다 : 나는 MainWindow를하고 ANE 레이아웃에서 일부 위젯을 배치를 만들 때 같은 창 위젯의 가장자리 사이의 간격이있다?

layout()->setContentsMargins(0,0,0,0); 및 스타일 시트를 편집했지만 효과가 없었습니다. 어떻게해야합니까?

답변

5

QMainWindow은 "중앙 위젯"이라는 개념이 있다는 점에서 QDialog 또는 QWidget과 약간 다릅니다. 이 창에는 도구 모음, 메뉴 및 도킹과 같은 항목을 처리 할 수있는 미리 정의 된 영역이 있으며 중앙 위젯을 창에 대한 기본 컨텐트로 정의합니다. 창 자체에는 일반적으로 레이아웃이 지정되지 않습니다. 그러나 내가하고있는 일은 창 레이아웃에 값을 설정하는 것입니다 (효과가 없습니다).

중앙 위젯으로 설정 한 위젯에는 대부분 자체 레이아웃이 있습니다. 기본적으로 중앙 위젯은 이미 가장자리로 확장 될 수 있습니다. 다음 예를 먼저 고려하십시오.

#include <QApplication> 
#include <QMainWindow> 
#include <QVBoxLayout> 
#include <QListWidget> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 

    QMainWindow *window = new QMainWindow; 
    window->resize(800,600); 

    QListWidget *listWidget = new QListWidget; 
    window->setCentralWidget(listWidget); 

    window->show(); 

    return a.exec(); 
} 

목록 위젯이 가장자리까지 완전히 확장 된 것을 볼 수 있습니다. 그러나보다 현실적인 예를 들면 다음과 같습니다.

#include <QApplication> 
#include <QMainWindow> 
#include <QVBoxLayout> 
#include <QListWidget> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 

    QMainWindow *window = new QMainWindow; 
    window->resize(800,600); 

    QWidget *central = new QWidget; 
    QListWidget *listWidget = new QListWidget; 

    QVBoxLayout *layout = new QVBoxLayout; 
    layout->addWidget(listWidget); 

    //Uncomment this following line to remove margins 
    //layout->setContentsMargins(0,0,0,0); 

    central->setLayout(layout); 

    window->setCentralWidget(central); 

    window->show(); 

    return a.exec(); 
} 

레이아웃이있는 컨테이너 위젯과 목록 위젯이 있습니다. 이 중앙 위젯의 레이아웃은 여백을 소개하는 것입니다.

+0

어떻게 마진을 제거 할 수 있습니까? – PTBG

+0

@PTBG : 레이아웃 내용 여백을 0으로 설정하는 줄의 주석 처리 만하면됩니다. – jdi

관련 문제