hitakiri
@hitakiri

Как добавить виджет в QMainWindow?

Необходимо добавить виджет menuBar в готовую программу. Виджет отлично добавляется в MainWindow. Но необходимо сделать так, чтобы логика добавления меню была в отдельном файле. Делаю так:
topMenu.h :
#ifndef TOPMENU_H
#define TOPMENU_H

#include <QMainWindow>
#include <QApplication>

class topMenu : public QWidget {

    Q_OBJECT

public:
    topMenu(QWidget *parent = nullptr);
    void showTopMenu();
};

#endif // TOPMENU_H


topMenu.cpp:
#include "topmenu.h"
#include <QMenu>
#include <QMenuBar>

topMenu::topMenu(QWidget *parent) : QWidget(parent) {
    void showTopMenu();
}

void topMenu::showTopMenu() {
    QAction *newProject = new QAction("&Новый проект");

    QMenu *file;
    QMenuBar *menu;

    file = menu->addMenu("&Меню");
    file->addAction(newProject);
}


mainwindow.h :
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include "topmenu.h"
#include <QMainWindow>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    topMenu *mmMenu;
};

#endif // MAINWINDOW_H


main.cpp:
#include "mainwindow.h"
#include "topmenu.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    MainWindow w;

    topMenu mmMenu;
    mmMenu.showTopMenu();
    w.show();


    return a.exec();
}


Соответственно результат нулевой, ошибок нет, но и меню не показывает...
  • Вопрос задан
  • 287 просмотров
Пригласить эксперта
Ответы на вопрос 1
Zifix
@Zifix Куратор тега Qt
Barbatum
А с чего вы взяли, что у вас сейчас главное окно и виджет меню хоть как-то связаны? А если у вас окон десять штук, как программа должна узнать в какое из них вы хотите добавить меню?

Подсказка: Вы где объект создали, в какой области памяти?

Возьмите любую книгу по Qt, книгу по С++, и разберитесь с базовыми вещами. Можно, конечно, и методом тыка, спрашивая на форуме каждый раз, но раз так в сто дольше.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы