crossplatform.ru

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

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> QAction и QMenu, как определить в каком меню (QMenu) данная опция (QAction) находится
AD
  опции профиля:
сообщение 14.9.2010, 10:36
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Как определить в каком меню (QMenu) данная опция (QAction) находится? Нашел в ассистенте, как определить есть в самой опции подменю, а вот эту задачу решить не нашел. Кто сможет подсказать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 14.9.2010, 11:18
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2921
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


я вот так сделал )
http://www.forum.crossplatform.ru/index.ph...ost&p=37207
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 14.9.2010, 11:39
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Цитата(Алексей1153 @ 14.9.2010, 12:18) *

многословно и непонятно, что именно относится к моему вопросу. Можно немного короче и одним, двумя предложениями?
SetMenu - это не то!

Сообщение отредактировал AD - 14.9.2010, 11:41
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 14.9.2010, 11:40
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

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




Репутация:   34  


Цитата(AD @ 14.9.2010, 12:39) *
Можно немного короче и одним, двумя предложениями?


Так?

bool menuContainsAction(const QMenu* menu, const QAction* action)
{
    QListIterator<QAction*> iter(menu->actions());
    while(iter.hasNext())
        if (iter.next() == action)
            return true;
    return false;
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 14.9.2010, 11:46
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Цитата(SABROG @ 14.9.2010, 12:40) *
Так?

Ну да. Спасибо. Только я думал, что есть встроенная операция. Писать свои и сам умею! :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 14.9.2010, 11:46
Сообщение #6


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

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




Репутация:   23  


Цитата(AD @ 14.9.2010, 11:36) *
Как определить в каком меню (QMenu) данная опция (QAction) находится? Нашел в ассистенте, как определить есть в самой опции подменю, а вот эту задачу решить не нашел. Кто сможет подсказать?

код можешь привести?
у действия хозяин есть?
SABROG,
касательно к твоему коду - у QList< > есть метод contains()
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 14.9.2010, 11:52
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

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




Репутация:   34  


Цитата(kwisp @ 14.9.2010, 12:46) *
касательно к твоему коду - у QList< > есть метод contains()

Хорошее замечание, про него то я и забыл.

if (menu->actions().contains(action))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 14.9.2010, 11:56
Сообщение #8


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Цитата(kwisp @ 14.9.2010, 12:46) *
код можешь привести?
у действия хозяин есть?

Какой код? Есть, к примеру, следующие меню:
File Edit View etc
у них есть опции:
New Window Ctrl+O [File]

Zoom In [View]

Как определить, зная опцию Zoom In, что она находится в меню View?

Цитата(SABROG @ 14.9.2010, 12:52) *
Хорошее замечание, про него то я и забыл.

if (menu->actions().contains(action))

Блин. Это не то. Все это предполагает перебор всех менюшек. Есть ли возможность, зная только опцию QAction, узнать меню, в котором находится эта опция.

Сообщение отредактировал AD - 14.9.2010, 11:56
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 14.9.2010, 12:08
Сообщение #9


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

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




Репутация:   23  


спрошу еще раз - хозяин у действия есть parent() ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 14.9.2010, 12:29
Сообщение #10


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Цитата(kwisp @ 14.9.2010, 13:08) *
спрошу еще раз - хозяин у действия есть parent() ?

parent() возвращает непустой указатель, значит есть. Но это ведь объект класс QObject?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




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