如何将菜单栏添加到QWidget?

时间:2014-11-12 22:02:52

标签: c++ qt 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类?

1 个答案:

答案 0 :(得分:3)

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

QMenuBar* mainMenu = this->menuBar();

但是可以将其添加到QWidget,就像任何其他小部件一样。只是不要在本地范围内分配它,因为它将在函数完成后删除。相反,与其他小部件一样:

QMenuBar mainMenu = new QMenuBar(this);

您还应该为窗口小部件添加布局,并将菜单添加到布局中,以便更好地控制窗体的显示位置。您可能会发现this tutorial有用。