繁体   English   中英

如何将菜单栏添加到QWidget?

[英]How to add a Menubar to a QWidget?

我目前正在使用Qt框架编写C ++应用程序,其中“主窗口”继承自QWidget类:

class Draughts : public QWidget
{
    Q_OBJECT
public:
    explicit Draughts(QWidget *parent = 0);
    ~Draughts();

private:
    Ui::Draughts *ui;
};

我尝试使用以下代码向应用程序添加一个简单的菜单栏:

Draughts::Draughts(QWidget *parent) :

    QWidget(parent),
    ui(new Ui::Draughts)
{
    ui->setupUi(this);

    QWidget *menuWidget = new QWidget;

    QMenu *menuGame = new QMenu("Game");
    menuGame->addAction("New");
    menuGame->addAction("Exit");

    QMenu *menuHelp = new QMenu("Help");
    menuHelp->addAction("How to Play...");
    menuHelp->addAction("About");

    //Setup the Application Menu
    QMenuBar mainMenu(this);
    mainMenu.addMenu(menuGame);
    mainMenu.addMenu(menuHelp);
}

我应该为我的应用程序使用QMainWindow类而不是QWidget类吗?

使用QMainWindow会更容易,因为它提供了一个方便的menuBar()方法:

QMenuBar* mainMenu = this->menuBar();

但是可以像其他小部件一样将其添加到QWidget 只是不要在本地范围内分配它,因为它将在函数完成后删除。 相反,请像使用其他小部件一样进行操作:

QMenuBar mainMenu = new QMenuBar(this);

您可能还应该将布局添加到窗口小部件,然后将菜单添加到布局以更好地控制它的显示位置。 您可能会发现本教程很有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM