Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Lion от Март 15, 2007, 19:41



Название: QAction и QMenu
Отправлено: Lion от Март 15, 2007, 19:41
Если QAction полученный от QMenu::menuAction() добавить в тулбар, то можно вызвать это меню только по нажатию на маленькую стрелку у кнопки. Как заставить вылезть меню при нажатии на саму кнопку?


Название: QAction и QMenu
Отправлено: Dodge от Март 16, 2007, 11:52
Как я понял, тебе нужно чтоб при нажатии на кнопку на тулбаре, вылезало попап меню... в обработчик события клика по кнопке, добавь execute соответствующего меню.


Название: QAction и QMenu
Отправлено: Lion от Март 17, 2007, 13:15
В этом случае меню появляется в произвольном месте, кроме QAction и QMenu мне ничего не известно.


Название: QAction и QMenu
Отправлено: Dodge от Март 19, 2007, 13:26
ммм... я несовсем понял проблему... move после execute не помогает?


Название: QAction и QMenu
Отправлено: Lion от Март 19, 2007, 15:34
А координаты для move как определить? У меня нет доступа к тулбару куда будет помещен QAction.


Название: QAction и QMenu
Отправлено: Dodge от Март 21, 2007, 12:02
Цитата: "Lion"
А координаты для move как определить? У меня нет доступа к тулбару куда будет помещен QAction.

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

#ifdef WIN32
  POINT p;
  CursorPos(&p);
  int x = p.x,
      y = p.y;
#else
  //код для линукса или макос...
#endif


Название: Re: QAction и QMenu
Отправлено: _govorilka от Март 22, 2007, 04:46
Цитата: "Lion"
Если QAction полученный от QMenu::menuAction() добавить в тулбар, то можно вызвать это меню только по нажатию на маленькую стрелку у кнопки. Как заставить вылезть меню при нажатии на саму кнопку?


Прочитай в справке про QToolButton. Оно для твоей проблемы специально создано!!! Постри пример про QMainWindow, там тоже написано, как все в жизни устроено.


Название: Re: QAction и QMenu
Отправлено: Lion от Март 26, 2007, 22:31
Цитата: "_govorilka"
Цитата: "Lion"
Если QAction полученный от QMenu::menuAction() добавить в тулбар, то можно вызвать это меню только по нажатию на маленькую стрелку у кнопки. Как заставить вылезть меню при нажатии на саму кнопку?


Прочитай в справке про QToolButton. Оно для твоей проблемы специально создано!!! Постри пример про QMainWindow, там тоже написано, как все в жизни устроено.

QToolButton это хорошо, но как его имея QAction или хотябы установить нужное дефолтное значение popupMode через QToolBar?


Название: Re: QAction и QMenu
Отправлено: _govorilka от Март 27, 2007, 07:34
Для установки поведения меню есть функция QToolButton::setPopupMode();
Для твоего случая подходит QToolButton::InstantPopup - меню показывается при нажатие на кнопку, эту константу надо передать функции
setPopupMode; Устанавить QAction можно через функцию setDefaultAction. Читай справку, смотри примеры, там все подробно написано!!!

p.s. QToolButton добавляется в QToolBar через QToolBar::addWidget();


Название: QAction и QMenu
Отправлено: Lion от Март 28, 2007, 22:28
Цитата: "Lion"
кроме QAction и QMenu мне ничего не известно.

В этом случае похоже никак :(


Название: Re: QAction и QMenu
Отправлено: sa_mel от Сентябрь 08, 2013, 08:06
С великодушного разрешения Модератора возможный рецепт решения проблемы (http://www.prog.org.ru/topic_25587_0.html) размещен в разделе "Уроки и статьи".