crossplatform.ru

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

История благодарностей участнику mks ::: Спасибо сказали: 1 раз(а)
Дата поста: В теме: За сообщение: Спасибо сказали:
20.7.2011, 23:31 QMenu внутри QToolBar
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. Вроде всё подробно написал :)
fortero,

RSS Текстовая версия Сейчас: 26.4.2024, 5:16