04 QT용 창 시스템 - QmainWindow
4806 단어 QT 시작 자습서
특별한 설명이 필요한 함수 중 하나는 다음과 같습니다.
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);