04 QT용 창 시스템 - QmainWindow

4806 단어 QT 시작 자습서
QmainWindow는 메뉴 표시줄 (menu bar), 도구 모음 (tool bars), 부동 창 (dock widgets), 상태 표시줄 (status bar), 중심 위젯 (central widget) 을 포함하는 주 창 프로그램의 클래스로 텍스트 편집기, 그림 편집기 등 많은 응용 프로그램의 기초이다.
특별한 설명이 필요한 함수 중 하나는 다음과 같습니다.
void QMainWindow::setCentralWidget(QWidget * widget);창의 핵심 컨트롤로 컨트롤을 설정합니다.
 
1. 메뉴 표시줄
주 창은 최대 하나의 메뉴 표시줄만 있습니다.주 창의 맨 위, 주 창의 제목 표시줄 아래에 위치하고 사용하기 전에 헤더 파일,, 을 추가해야 합니다.
1. 메뉴 표시줄을 만들고 QmainWindow 클래스의menubar () 함수를 통해 메인 창 메뉴 표시줄 포인터를 가져옵니다
QMenuBar * menuBar() const

2. 메뉴를 만들고 QMenu의 구성원 함수addMenu를 호출하여 메뉴를 추가합니다
/*               */
QAction* addMenu(QMenu * menu)

/*        title     */
QMenu* addMenu(const QString & title)

/*        icon,   title     */
QMenu* addMenu(const QIcon & icon, const QString & title)

3. 메뉴 항목을 만들고 QMenu의 구성원 함수addaction을 호출하여 메뉴 항목을 추가합니다
QAction* activeAction() const

QAction* addAction(const QString & text)

QAction* addAction(const QIcon & icon, const QString & text)

QAction* addAction(const QString & text, const QObject * receiver,
 const char * member, const QKeySequence & shortcut = 0)

QAction* addAction(const QIcon & icon, const QString & text, 
  const QObject * receiver, const char * member,const QKeySequence & shortcut = 0) 

4. 분할선 추가
분할선을 추가하는 것은 QMenu 클래스의 addSeparator () 함수를 사용합니다.
#include 
#include 
#include 


 /*       */
QMenuBar* mBar = menuBar();

/*       */
QMenu* pFile = mBar->addMenu("  ");
    
/*       */
QMenu* pView = mBar->addMenu("  ");

/*             */
QAction*pNew = pFile->addAction("  ");

/*             */
QAction*pOpen = pFile->addAction("  ");

/*  Lambda         */
connect(pNew,&QAction::triggered,
            [=]()
            {
                qDebug()<addSeparator();

 
2. 도구 모음
주 창의 도구막대에 여러 개의 도구막대가 있을 수 있습니다. 보통 하나의 메뉴가 하나의 도구막대에 대응하는 방식을 사용하거나 필요에 따라 도구막대를 구분할 수 있으며, 사용하기 전에 헤더 파일을 추가해야 합니다.
1. QmainWindow 클래스의addToolBar () 함수를 직접 호출하여 메인 창의 도구막대 대상을 가져옵니다. 도구막대를 추가할 때마다 이 함수를 호출해야 합니다.
2. 도구막대에 작업을 추가하고 QToolBar 클래스의addaction 함수를 통해 추가합니다.
3. setAllowedAreas() 함수를 사용하여 스톱 영역을 지정합니다.
Qt::LeftToolBarArea         
Qt::RightToolBarArea        
Qt::BottomToolBarArea       
Qt::TopToolBarArea          
Qt::AllToolBarAreas              

4、setMoveable () 함수를 사용하여 도구막대의 이동성을 설정
예제 코드는 다음과 같습니다.
/*           */
QToolBar* toolBar = addToolBar("   ");

/*   addAction         QAction   */
toolBar->addAction(pNew);

QPushButton* b = new QPushButton(this);
b->setText("  ");

/*   addWidget           b */
toolBar->addWidget(b);

/*                    ,           */
toolBar->setAllowedAreas(Qt::LeftToolBarArea);

/*           */
toolBar->setMovable(false);

3. 상태막대
상태 표시줄을 사용하기 전에 헤더 파일을 추가해야 합니다.
1. QmainWindow 클래스의statusBar () 함수를 직접 호출하여 주 창의 상태 표시줄 대상을 가져옵니다. 도구막대를 추가할 때마다 이 함수를 호출해야 합니다.
2、위젯 추가:void addWidget(QWidget * widget, int stretch = 0)
3, 작은 위젯 삽입: int insertWidget (int index, QWidget * widget, int stretch = 0)
4, 위젯 삭제:void removeWidget(QWidget * widget)
예제 코드는 다음과 같습니다.
    /*         */
    QStatusBar* sBar = statusBar();

    /*     QLabel  ,       */
    QLabel* label = new QLabel(this);
    label->setText("  ");

    /*            QLabel   */
    sBar->addWidget(label);

    /*           QLabel   */
    sBar->addPermanentWidget(new QLabel("  ",this));

    QLabel* k = new QLabel(this);
    k->setText("   ");

    /*         0       k */
    sBar->insertWidget(0,k);

    /*        label   */
    sBar->removeWidget(label);

4. 부동 창
부동 창을 사용하려면 새 헤더 파일이 필요합니다.
1. void QmainWindow::addDockWidget(Qt: DockWidgetArea area, QDockWidget * dockwidget) 함수는 주 창에 부동 창을 추가할 수 있습니다. 여기서 Qt: DockWidgetArea area의 사용 가능한 값은 다음과 같습니다.
    enum DockWidgetArea {
        LeftDockWidgetArea = 0x1,     //     
        RightDockWidgetArea = 0x2,    //     
        TopDockWidgetArea = 0x4,      //     
        BottomDockWidgetArea = 0x8,   //     

        DockWidgetArea_Mask = 0xf,     
        AllDockWidgetAreas = DockWidgetArea_Mask,
        NoDockWidgetArea = 0          //    
    };

예제 코드는 다음과 같습니다.
    /*            */
    QDockWidget* dock = new QDockWidget(this);

    /*      dock           ,  ,      */
    addDockWidget(Qt::RightDockWidgetArea,dock);

 
 

 
 
 
 
 
 
 
 
 
 
 

좋은 웹페이지 즐겨찾기