2012-02-21 3 views
1

QMenuBar를 화면 하단에 놓을 수있는 방법이 있습니까 (QMainWindow 하단에 있음)?QMenuBar을 QMainWindow Bottom QT에 넣으십시오

저는 논문 프로젝트를 진행하고 있습니다. 그리고 감독은 QMenuBar를 화면 맨 아래에 놓으라고 요청했습니다. 이것이 가능한가?, 나는 menubar 형상을 조정하려고 노력하고있다. Qt 디자이너에서 바 위치를 이동할 수 있지만 프로젝트를 실행할 때 메뉴 막대는 항상 위로 있습니다.

미리 감사드립니다.

답변

3

QMainWindow와 함께 제공된 기본 QMenuBar를 사용하지 마십시오. 대신 자신을 만드십시오. 이것은 Windows에서 적어도 작동

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 

    QMenuBar* bar = new QMenuBar(this); 
    ui->verticalLayout->addWidget(bar); 

    QMenu* menu1 = new QMenu("First menu", bar); 
    menu1->addMenu("Foo"); 
    menu1->addMenu("Bar"); 

    QMenu* menu2 = new QMenu("Second menu", bar); 
    menu2->addMenu("Foo"); 
    menu2->addMenu("Bar"); 

    bar->addMenu(menu1); 
    bar->addMenu(menu2); 
} 

: 개념 예를 들어이 증거는 MainWindow를에 추가 된 QVBoxLayout에 추가 된 새로운 QMenuBar을 만듭니다.

+0

답장을 보내 주셔서 감사합니다. 나중에 사용해 보겠습니다. – Herman

+0

예, QMainWindows에는 기본적으로 세로 레이아웃이 없으므로 수동으로 추가해야합니다. –

+0

안녕하세요, Qoku에서 조금 새로운 것입니다. 즉, QMainWindow에 QVerticalLayout을 배치해야한다는 의미입니다. 트리밍 한 것이고, 창 크기가 조정될 때 화면 하단에 세로 레이아웃을 유지하는 방법이 궁금합니다. 하지만 레이아웃은 항상 같은 위치에 있습니다. 레이아웃을 조정할 때 창의 크기가 조정될 때 방법이 있습니까? 미리 감사드립니다. – Herman

0

QDockWidget에 메뉴를 배치 했으므로 맨 아래에 메뉴 막대를 배치 할 수도 있습니다.

하지만 프로그래밍 방식으로 처리해야합니다. QMenuBar는 QWidget을 상속하므로 QMainWindow의 맨 아래에 QWidget을 추가 한 다음이 QWidget을 부모 위젯으로 지정하는 QMenuBar를 만듭니다.

+0

답변 해 주셔서 감사합니다. – Herman