Russian Qt Forum
Октябрь 01, 2024, 07:15 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Господа, снимите с ручника плиз  (Прочитано 5445 раз)
Вячеслав
Гость
« : Октябрь 16, 2007, 18:04 »

Qt 4.3.1
Нужно к кнопке на толбаре прикрутить менюху
Попытался в лоб
Код:
QAction *A1= new QAction("1",this);
QAction *A1= new QAction("2",this);
QMenu  *menu=new QMenu;
QAction *btn=new QAction("Select");
btn->setMenu(menu);
toolbar->addAction(btn);
Собственно кнопка есть , меню нет.....
выкрутился в лоб в слоте от triggered btn sender()->menu()->exec(....); Но как-то не красиво ... Или  это правильный путь ?(через слот ?)
Записан
Kainit
Гость
« Ответ #1 : Октябрь 16, 2007, 18:35 »

Бред какой-то написан выше....
И вообще, почему бы не посмотреть примеры перед странными вопросами?

Код:
QMenu *fileMenu = menuBar()->addMenu(tr("&File"));
QAction *saveAct = fileMenu->addAction("Сохранить");
или же
Код:
QToolButton button= new QToolButton();
QMenu *menu= new QMenu(button);
QAction *saveAct = menu->addAction("Сохранить");
button->setMenu(menu);

« Последнее редактирование: Октябрь 16, 2007, 18:40 от Kainit » Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #2 : Октябрь 16, 2007, 19:03 »

Можно сделать вот так:

Код:
QMenu *menu = new QMenu("Menu");
menu->addAction("1");
menu->addAction("2");
menu->addAction("3");
toolBar->addAction(menu->menuAction());
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
ритт
Гость
« Ответ #3 : Октябрь 16, 2007, 19:40 »

думаю, через сетМеню всё же правильнее
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #4 : Октябрь 16, 2007, 21:22 »

думаю, через сетМеню всё же правильнее

Дело в том, что на тулбаре размещаються QAction и зацепить на него менюху при помощи setMenu лично у меня не получилось, поэтому предложил другой вариант
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
ритт
Гость
« Ответ #5 : Октябрь 16, 2007, 22:10 »

мне почему-то подумалось, что он кнопку через виджетакшен поместил
что-т не подумал про то, что тулбар акшены отрисовывает в иде тулбаттонов...хотя сам это повсеместно использую Улыбающийся

насколько я помню, тулбаттону можно заказать стрелочку справа для выпадающего меню...и если не путаю, как-раз при установке контекстного меню
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #6 : Октябрь 16, 2007, 23:01 »

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

Такая стрелочка рисуется тем кодом что я привел (т.е. пи добавлении на тулбар menuAction)
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #7 : Октябрь 17, 2007, 01:34 »

Вот кусок кода из моего приложения, который работает:

Код:
    mBackground = new QMenu(this); 
    mBackground->addAction(QIcon(":/buttons/icon16_customimage.png"), tr("Свое изображение"), this,
        SLOT(customBackground()));
    mBackground->addAction(QIcon(":/buttons/icon16_colorimage.png"), tr("Свой цвет"), this,
        SLOT(colorBackground()));
    mBackground->addAction(QIcon(":/buttons/icon16_image.png"), tr("Стандартное изображение"), this,
        SLOT(standardBackground()));
    mBackground->addAction(QIcon(":/buttons/icon16_noimage.png"), tr("Убрать изображение"), this,
        SLOT(noBackground()));
   
    tbBackground = new QToolButton(this);
    tbBackground->setIcon(QIcon(":/buttons/icon16_customimage.png"));
    tbBackground->setToolTip(tr("Установить фоновое изображение"));
    tbBackground->setMenu(mBackground);
    tbBackground->setPopupMode(QToolButton::InstantPopup);
    m_toolbar->addWidget(tbBackground);
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Вячеслав
Гость
« Ответ #8 : Октябрь 17, 2007, 09:56 »

Всем балльшой спасиб - я в упор забыл про QToolButton и пытался добиться менюхи от QActiona ж)
И ведь получилось , хотя через ж..... Подмигивающий Подмигивающий
Код:
	
QAction *a=dynamic_cast<QAction *>(sender());
if(a && a->menu())
 {
   a->menu()->exec(QCursor::pos());
 }
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.131 секунд. Запросов: 23.