crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> QMenu внутри QToolBar, Как внедрить меню в тулбар?
fortero
  опции профиля:
сообщение 20.7.2011, 22:51
Сообщение #11


Участник
**

Группа: Участник
Сообщений: 132
Регистрация: 4.12.2010
Пользователь №: 2242

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(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
  опции профиля:
сообщение 20.7.2011, 23:31
Сообщение #12


Новичок


Группа: Новичок
Сообщений: 8
Регистрация: 23.12.2010
Пользователь №: 2295

Спасибо сказали: 1 раз(а)




Репутация:   0  


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
  опции профиля:
сообщение 20.7.2011, 23:49
Сообщение #13


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


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

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

Прикрепленное изображение
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
fortero
  опции профиля:
сообщение 21.7.2011, 0:55
Сообщение #14


Участник
**

Группа: Участник
Сообщений: 132
Регистрация: 4.12.2010
Пользователь №: 2242

Спасибо сказали: 0 раз(а)




Репутация:   0  


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

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

Прикрепленное изображение


А как данный пример к моему коду пристековать, голова уже не варит(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
fortero
  опции профиля:
сообщение 21.7.2011, 1:26
Сообщение #15


Участник
**

Группа: Участник
Сообщений: 132
Регистрация: 4.12.2010
Пользователь №: 2242

Спасибо сказали: 0 раз(а)




Репутация:   0  


Кажется решил, что то вроде этого:
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;
}

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V  < 1 2
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.11.2024, 1:44