Как добавить Menubar в QWidget?

0

В настоящее время я пишу приложение C++, используя структуру Qt, в которой "основное окно" наследуется от класса 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 для моего приложения?

  • 0
    В чем дело? Каким образом код связан с вашим вопросом?
  • 0
    нашел дубликат: добавление меню в основной класс, производное от QWidget
Показать ещё 2 комментария
Теги:
qt
qwidget

1 ответ

3
Лучший ответ

Было бы проще использовать QMainWindow, потому что он обеспечивает удобный menuBar():

QMenuBar* mainMenu = this->menuBar();

Но его можно добавить в QWidget, как и любой другой виджет. Просто не выделяйте его в локальной области, потому что он будет удален после завершения функции. Вместо этого сделайте это с другими виджетами:

QMenuBar mainMenu = new QMenuBar(this);

Вероятно, вы также должны добавить макет к своему виджету и добавить меню в макет, чтобы иметь больше контроля над тем, где он появляется. Вы можете найти этот учебник полезным.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню