Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QMenu внутри QToolBar
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
fortero
Добрый вечер!
Не как не могу додуматься как мне внедрить меню в панель инструментов, нужно что бы выскакивало меню по нажатию кнопки в панели инструментов. Вот что имею, как допилить помогите пожалуйста:
QToolBar *TableCl::createMenuBar(){
    QToolBar *toolEdit = new QToolBar(this);

        QPixmap pix(32, 32);//Тестовый код
        pix.fill(Qt::green);//
        QPixmap pix2(32, 32);
        pix2.fill(Qt::darkBlue);
        QPixmap pix3(32, 32);
        pix3.fill(Qt::red);
        
    toolEdit->addSeparator();
    toolEdit->addAction(QIcon(":/img/add.png"), tr("Добавить запись в базу \"Клавиша Insert\""), this, SLOT(addSkIt_slot()));
    toolEdit->addAction(QIcon(":/img/edit.png"), tr("Редактировать запись \"Клавиша Enter\""), this, SLOT(editBarBut_slot()));
    toolEdit->addAction(QIcon(":/img/del.png"), tr("Удалить запись \"Клавиша Delete\""), this, SLOT(delete_slot()));
    toolEdit->addSeparator();
    toolEdit->addAction(pix, tr("Обновить таблицу"), this, SLOT(refresh_slot()));
    toolEdit->addAction(pix2, tr("Поиск"), this, SLOT(finds_slot()));
    toolEdit->addSeparator();
    //toolEdit->addAction(); Как тут прописать код???
    toolEdit->addSeparator();
    return toolEdit;
}

Спасибо за внимание!
RazrFalcon
Вам нужна кнопка в QMenuBar?
fortero
Цитата(RazrFalcon @ 20.7.2011, 21:05) *
Вам нужна кнопка в QMenuBar?

Вот такого типа меню внутри панели инструментов:
Нажмите для просмотра прикрепленного файла
RazrFalcon
void QAction::setMenu ( QMenu * menu )
Оно?
fortero
Цитата(RazrFalcon @ 20.7.2011, 21:45) *
void QPushButton::setMenu ( QMenu * menu )
Оно?

Оно то оно, но как мне QPushButton поместить в
toolEdit->addAction(); Как тут прописать код???
mks
fortero смотри вложение, оно ?
Нажмите для просмотра прикрепленного файла
fortero
Цитата(mks @ 20.7.2011, 22:10) *

Нет не так, как на скрине кнопочка из панели инструментов которая при нажатии делает небольшое меню...
mks
Ну так и есть, у меня тоже кнопочка на панели инструментов которая при нажатии создаёт меню из одного действия? Что смущает, что там один пункт ? Или что на кнопочки нет картинки ?
fortero
Цитата(mks @ 20.7.2011, 22:31) *
Ну так и есть, у меня тоже кнопочка на панели инструментов которая при нажатии создаёт меню из одного действия? Что смущает, что там один пункт ? Или что на кнопочки нет картинки ?

Ой блин, извеняюсь, я протупил я подумал что это менюшная кнопка а не инструментальная. А как в коде сделать так как у Вас?
mks
Делать наверно можно как угодно, я просто идею показал, раньше ничего подобного не делал :) Мне думается что главное правильно рассчитать точку вывода меню относительно кнопки.
fortero
Цитата(mks @ 20.7.2011, 22:41) *
Делать наверно можно как угодно, я просто идею показал, раньше ничего подобного не делал :) Мне думается что главное правильно рассчитать точку вывода меню относительно кнопки.

Помогите пожалуйста, вот кусочик кода отвечающий за панели инструментов, нужно ещё одну кнопочку привентить с минюшкой:
QToolBar *TableCl::createMenuBar(){
    QToolBar *toolEdit = new QToolBar(this);

        QPixmap pix(32, 32);//Тестовый код
        pix.fill(Qt::green);//
        QPixmap pix2(32, 32);
        pix2.fill(Qt::darkBlue);
        QPixmap pix3(32, 32);
        pix3.fill(Qt::red);
        
    toolEdit->addSeparator();
    toolEdit->addAction(QIcon(":/img/add.png"), tr("Добавить запись в базу \"Клавиша Insert\""), this, SLOT(addSkIt_slot()));
    toolEdit->addAction(QIcon(":/img/edit.png"), tr("Редактировать запись \"Клавиша Enter\""), this, SLOT(editBarBut_slot()));
    toolEdit->addAction(QIcon(":/img/del.png"), tr("Удалить запись \"Клавиша Delete\""), this, SLOT(delete_slot()));
    toolEdit->addSeparator();
    toolEdit->addAction(pix, tr("Обновить таблицу"), this, SLOT(refresh_slot()));
    toolEdit->addAction(pix2, tr("Поиск"), this, SLOT(finds_slot()));
    toolEdit->addSeparator();
    //toolEdit->addAction(Как тут прописать код для кнопки меню???);
    toolEdit->addSeparator();
    return toolEdit;
}
mks
QToolBar *TableCl::createMenuBar(){
    QToolBar *toolEdit = new QToolBar(this);

        QPixmap pix(32, 32);//Тестовый код
        pix.fill(Qt::green);//
        QPixmap pix2(32, 32);
        pix2.fill(Qt::darkBlue);
        QPixmap pix3(32, 32);
        pix3.fill(Qt::red);
        
    toolEdit->addSeparator();
    toolEdit->addAction(QIcon(":/img/add.png"), tr("Добавить запись в базу \"Клавиша Insert\""), this, SLOT(addSkIt_slot()));
    toolEdit->addAction(QIcon(":/img/edit.png"), tr("Редактировать запись \"Клавиша Enter\""), this, SLOT(editBarBut_slot()));
    toolEdit->addAction(QIcon(":/img/del.png"), tr("Удалить запись \"Клавиша Delete\""), this, SLOT(delete_slot()));
    toolEdit->addSeparator();
    toolEdit->addAction(pix, tr("Обновить таблицу"), this, SLOT(refresh_slot()));
    toolEdit->addAction(pix2, tr("Поиск"), this, SLOT(finds_slot()));
    toolEdit->addSeparator();
    // прописать как то так:
    toolEdit->addAction(QIcon(":/img/popupmenu.png"), tr("вызвать меню"), this, SLOT(showPopUpmenu_slot()));
    toolEdit->addSeparator();
    return toolEdit;
}
в этом же объекте прописать слот реакции:
void TableCl::showPopUpmenu_slot()
{
  menu->popup(this->mapToGlobal(QPoint(2,20)),0);
}

и в конструкторе TableCl что то типа такого:
  
  popupMenuAction = new QAction(QString("action"),this);
  menu = new QMenu(QString("title"),this);
  menu->addAction(popupMenuAction);
  connect(popupMenuAction,SIGNAL(triggered()),this,SLOT(popupSlot()));

popupSlot() тоже прописать либо в этом же классе либо в каком то другом. И не забыть прописать в классе переменные popupMenuAction и menu. Вроде всё подробно написал :)
Litkevich Yuriy
Мужики, хватит извращатся
Цитата(fortero @ 21.7.2011, 0:11) *
Вот такого типа меню внутри панели инструментов:
Это просто вложеные меню (точнее QAction), когда есть вложения, кнопка на панели инструментов сама себя так ведёт.

П.С.
Вы почему такие не любопытные (читай скушные), есть же примеры и демки в Qt, их первым делом пощупать надо было.
%QTDIR%\demos\mainwindow
Нажмите для просмотра прикрепленного файла
fortero
Цитата(Litkevich Yuriy @ 20.7.2011, 23:49) *
Мужики, хватит извращатся
Цитата(fortero @ 21.7.2011, 0:11) *
Вот такого типа меню внутри панели инструментов:
Это просто вложеные меню (точнее QAction), когда есть вложения, кнопка на панели инструментов сама себя так ведёт.

П.С.
Вы почему такие не любопытные (читай скушные), есть же примеры и демки в Qt, их первым делом пощупать надо было.
%QTDIR%\demos\mainwindow
Нажмите для просмотра прикрепленного файла

А как данный пример к моему коду пристековать, голова уже не варит(
fortero
Кажется решил, что то вроде этого:
QToolBar *TableCl::createMenuBar(){
    QToolBar *toolEdit = new QToolBar(this);

        QPixmap pix(32, 32);//Тестовый код
        pix.fill(Qt::green);//
        QPixmap pix2(32, 32);
        pix2.fill(Qt::darkBlue);
        QPixmap pix3(32, 32);
        pix3.fill(Qt::red);
        
        QMenu *menu = new QMenu("One", toolEdit);
        menu->setIcon(pix3);
        menu->addAction("A");
        menu->addAction("B");
        menu->addAction("C");

        
    toolEdit->addSeparator();
    toolEdit->addAction(QIcon(":/img/add.png"), tr("Добавить запись в базу \"Клавиша Insert\""), this, SLOT(addSkIt_slot()));
    toolEdit->addAction(QIcon(":/img/edit.png"), tr("Редактировать запись \"Клавиша Enter\""), this, SLOT(editBarBut_slot()));
    toolEdit->addAction(QIcon(":/img/del.png"), tr("Удалить запись \"Клавиша Delete\""), this, SLOT(delete_slot()));
    toolEdit->addSeparator();
    toolEdit->addAction(pix, tr("Обновить таблицу"), this, SLOT(refresh_slot()));
    toolEdit->addAction(pix2, tr("Поиск"), this, SLOT(finds_slot()));
    toolEdit->addSeparator();
    toolEdit->addAction(menu->menuAction());
    toolEdit->addSeparator();
    
    
    return toolEdit;
}

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.