2012-02-21 75 views
1

有什么方法可以将QMenuBar放在屏幕底部(我的意思是,在QMainWindow底部)?把QMenuBar放在QMainWindow底部的QT

我正在做我的论文项目,我的导演让我把QMenuBar放在屏幕底部。这可能吗?我一直在尝试调整菜单栏几何。在Qt Designer中,我可以移动栏位,但是当我运行我的项目时,菜单栏始终处于启动状态。

在此先感谢。

回答

3

请勿使用QMainWindow提供的默认QMenuBar。相反,创建你自己的。例如概念证明了这一点产生被添加到被添加到主窗口一个QVBoxLayout新QMenuBar:

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); 
} 

这在Windows工作最少。

+0

感谢您的回答Roku,我将在稍后尝试,我非常感谢您的帮助 – Herman 2012-02-22 13:35:50

+0

是的,QMainWindows没有垂直布局作为默认设置,必须手动添加。 – 2012-02-22 14:58:42

+0

嗨Roku,我在Qt有点新,这是否意味着我必须在我的QMainWindow中放置一个QVerticalLayout,我已经三化并且想知道如何在窗口调整大小时保持屏幕底部的垂直布局,但是布局总是在同一个地方,当窗口被调整大小时,有没有办法来布局布局?提前致谢。 – Herman 2012-02-22 15:04:33

0

我已经将菜单放在QDockWidget中,所以我认为它也可以将菜单栏放在底部。

但是你必须做到这一点programmaticaly。 QMenuBar继承了QWidget,因此只需在QMainWindow的底部添加一个QWidget,然后创建一个QMenuBar,将该QWidget指定为父窗口小部件。

+0

感谢您的回答 – Herman 2012-02-22 13:36:59