Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2013, 22:17   #1
Notan1310
Форумчанин
 
Регистрация: 01.01.2012
Сообщений: 118
По умолчанию Не привязывается QMenu

Доброе время суток пробоема заключается в следующем. Вообще не получается добавить меню никуда. Даже из справочника не работает. Программа компилируется но меню не работает. что делать

#include <QtGui>


// ----------------------------------------------------------------------
int main(int argc, char** argv)
{
QApplication app(argc, argv);

QMenuBar mnuBar;
QMenu* pmnu = new QMenu("&Menu");

pmnu->addAction("&About Qt",
&app,
SLOT(aboutQt()),
Qt::CTRL + Qt::Key_Q
);

pmnu->addSeparator();

QAction* pCheckableAction = pmnu->addAction("&CheckableItem");
pCheckableAction->setCheckable(true);
pCheckableAction->setChecked(true);



QMenu* pmnuSubMenu = new QMenu("&SubMenu", pmnu);
pmnu->addMenu(pmnuSubMenu);
pmnuSubMenu->addAction("&Test");

QAction* pDisabledAction = pmnu->addAction("&DisabledItem");
pDisabledAction->setEnabled(false);

pmnu->addSeparator();

pmnu->addAction("&Exit", &app, SLOT(quit()));

mnuBar.addMenu(pmnu);
mnuBar.show();

return app.exec();
}
программа из учебника, просто скопированная правой кнопкой мыши но все равно не видать меню!!!! Оно бесит все работает а оно нет
Notan1310 вне форума Ответить с цитированием
Старый 12.01.2013, 19:05   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Проще всего будет показать вам, как создать главное окно (MainWindow). И для этого окна Menu и ToolBar.

- запускаем Qt Creator

- в меню File выбираем New File or Project...

- выбираем в панели слева Other Project. A в панели справа Empty Qt Project

- нажимаем кнопку Choose...

- вводим имя проекта "DemoMenu". И выбираем каталог для проекта

- далее нажимаем -> Next -> Next - Finish

ПКМ - правая кнопка мыши

- ПКМ по названию проекта на панели слева

- выбираем Add New...

- на панели слева выбираем С++. А на панели справа выбираем C++ Source File. Нажимаем Choose...

- вводим имя main. Нажимаем Next. И нажимаем Finish

- ПКМ по названию проекта на панели слева

- выбираем Add New...

- на панели слева выбираем С++. А на панели справа выбираем C++ Class. Нажимаем Choose...

- вводим в поле Class Name имя DemoMenuMainWindow. Вводим в поле Base Class имя QMainWindow. Нажимаем

Next
. И нажимаем Finish

- копируем следующий код в файл main.cpp:

Код:
#include <QApplication>
#include "demomenumainwindow.h"

int main(int argc, char **argv)
{
    QApplication app(argc, argv);

    DemoMenuMainWindow mw;
    mw.show();

    app.exec();
}
- нажимаем кнопку Run. Должно появиться окно:



- далее добавим Menu и ToolBar и картинку к ним. Картинку можно скачать по следующей ссылке (в формате .png): http://www.iconfinder.com/search/?q=open

- создаём каталог "images" и помещаем туда скаченную картинку. Картинку переименовываем в "open.png"

Чтобы добавить в ресурсы картинку нужно:

- ПКМ по названию проекта на панели слева

- выбираем Add New...

- на панели слева выбираем Qt. А на панели справа выбираем Qt Resource file. Нажимаем Choose...

- вводим имя images. Нажимаем Next. И нажимаем Finish

- на панели слева Projects выбираем: Resoures. Двойной клик по images.qrc

- нажимаем кнопку Add. И выбираем Add Prefix

- в поле Prefix оставляем только косую черту: /

- нажимаем кнопку Add. Выбираем Add Files. И выбираем файл open.png

- заменяем содержимое файлов:

demomenumainwindow.h
Код:
#ifndef DEMOMENUMAINWINDOW_H
#define DEMOMENUMAINWINDOW_H

#include <QMainWindow>

class QAction;

class DemoMenuMainWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit DemoMenuMainWindow(QWidget *parent = 0);
    
signals:
    
private slots:
    void openFileSLOT();
    
private:
    void createActions();
    void createMenus();
    void createToolbars();
    QAction *openAction;
};

#endif // DEMOMENUMAINWINDOW_H
demomenumainwindow.cpp
Код:
#include "demomenumainwindow.h"
#include <QAction>
#include <QMenu>
#include <QMenuBar>
#include <QToolBar>
#include <QFileDialog>
#include <QMessageBox>

DemoMenuMainWindow::DemoMenuMainWindow(QWidget *parent) :
    QMainWindow(parent)
{
    createActions();
    createMenus();
    createToolbars();
}

void DemoMenuMainWindow::createActions()
{
    openAction = new QAction(QIcon(":/images/open.png"), tr("&Open"), this);

    connect(openAction, SIGNAL(triggered()), this, SLOT(openFileSLOT()));
}

void DemoMenuMainWindow::createMenus()
{
    QMenu *menu;

    menu = menuBar()->addMenu(tr("File"));
    menu->addAction(openAction);
}

void DemoMenuMainWindow::createToolbars()
{
    QToolBar *toolbar;

    toolbar = addToolBar(tr("File"));
    toolbar->addAction(openAction);
}

void DemoMenuMainWindow::openFileSLOT()
{
    QString filename = QFileDialog::getOpenFileName(this,
                                                    tr("Open File"),
                                                    QDir::currentPath(),
                                                    tr("Text File (*.txt)"));

    if (!filename.isNull()) {
        QMessageBox::information(this, tr("Message"), filename);
    }
}
- запускаем. При нажатии на кнопку (на панели инструментов (или в меню)) появляется диалог открытия файла (а при выборе файла выводится путь к нему через сообщение):



P.S. Прикрепил пример из книги "Foundations of Qt Development". В примере подробно показано, как работать с меню и панелью инструментов.
Вложения
Тип файла: zip sdi.zip (701.7 Кб, 11 просмотров)
8Observer8 вне форума Ответить с цитированием
Старый 12.01.2013, 22:24   #3
Notan1310
Форумчанин
 
Регистрация: 01.01.2012
Сообщений: 118
По умолчанию

Вообщем проблема такая вот оно где http://img-fotki.yandex.ru/get/6430/...c6c3db76_L.jpg
Операционна я система Linux Ubuntu 12.04 это номально? Как добавить в основное окно программы. Подозреваю нужна строка кода)) Но какая . Все искал но везде ответы не работают!!!! Т.к добавляется на левый угол!!!!

Последний раз редактировалось Notan1310; 12.01.2013 в 22:27.
Notan1310 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц