LINUX.ORG.RU

Создание меню Qt, Ubuntu

 


0

1

Привет,

Создаю на Qt меню на форме. Система Ubuntu.

Меню создается, глобальное меню отображается нормально, но в самом окне меню почему то обрезается вот так:

Скрин меню

Как отобразить меню в окне полностью? Или убрать его из окна совсем, оставив только глобальное меню?

Ответ на: комментарий от HerrWeigel

Не нужно и там и там, это не принципиально, можно оставить только глобальное меню, тогда как убрать ту часть которая в окне?

//menu.h
#include <QMenuBar>
#include <QMenu>
#include <QAction>

class Menu : public QMenuBar
{
    Q_OBJECT
public:
    Menu(QWidget* parent = 0);

    QAction* newAct;
    QAction* openAct;
    QAction* closeAllAct;
    QAction* save;
    QAction* saveAs;
    QAction* exitAct;

    QAction* helpAct;
private:
    QWidget* p;
    QMenu* fileMenu;
    QMenu* editMenu;
    QMenu* makingMenu;
    QMenu* debugMenu;
    QMenu* helpMenu;
    QMenu* aboutMenu;

    void createMenuBar();
    void createActions();
};
//menu.cpp
#include <menu.h>

Menu::Menu(QWidget *parent):QMenuBar(parent)
{
    p = parent;
    createActions();
    createMenuBar();
}
void Menu::createActions()
{
    newAct = new QAction(tr("&New"), p);
    newAct->setShortcut(QKeySequence::New);
    newAct->setStatusTip(tr("Create a new file"));

    openAct = new QAction(tr("&Open"), p);
    openAct->setShortcut(QKeySequence::Open);
    openAct->setStatusTip("Open a file");

    closeAllAct = new QAction(tr("CloseAll"), p);
    closeAllAct->setStatusTip("Close a file");

    save = new QAction(tr("&Save"), p);
    save->setShortcut(QKeySequence::Save);
    save->setStatusTip(tr("Save a file"));

    saveAs = new QAction(tr("&SaveAs"), p);
    saveAs->setShortcut(QKeySequence::SaveAs);
    saveAs->setStatusTip(tr("SaveAs a file"));

    exitAct = new QAction(tr("E&xit"), p);
    exitAct->setShortcut(tr("Ctrl+Q"));
    exitAct->setStatusTip(tr("Exit the application"));

    helpAct = new QAction(tr("Help"), p);
    helpAct->setShortcut(tr("F1"));
    helpAct->setStatusTip(tr("Help"));
}
void Menu::createMenuBar()
{
    createActions();

    fileMenu = new QMenu(tr("&File"), p);
    fileMenu->addAction(newAct);
    fileMenu->addAction(openAct);
    fileMenu->addSeparator();
    fileMenu->addAction(closeAllAct);
    fileMenu->addSeparator();
    fileMenu->addAction(save);
    fileMenu->addAction(saveAs);
    fileMenu->addSeparator();
    fileMenu->addAction(exitAct);

    this->addMenu(fileMenu);

    editMenu = new QMenu(tr("&Edit"), p);
    this->addMenu(editMenu);

    makingMenu = new QMenu(tr("Making"), p);
    this->addMenu(makingMenu);

    debugMenu = new QMenu(tr("Debug"), p);
    this->addMenu(debugMenu);

    helpMenu = new QMenu(tr("Help"), p);
    helpMenu->addAction(helpAct);
    this->addMenu(helpMenu);

    aboutMenu = new QMenu(tr("About"), p);
    this->addMenu(aboutMenu);
}
Далее в конструкторе Main окна делаю так:
class MainWindow : public QMainWindow
{
    Q_OBJECT
    Menu* menu;
public:
    MainWindow()
    {
         ...
         menu = new Menu(this);
         ...
    }
}

Antonavt
() автор топика
Ответ на: комментарий от Antonavt

Можно установить для приложения переменную окружения UBUNTU_MENUPROXY=0

Не знаю, сработает ли с Qt-приложением, с Gtk срабатывает.

kravich ★★★★
()
Ответ на: комментарий от enep

Стив Баллмер с недоброй ухмылкой смотрит на всё здесь происходящее.

akinator ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.