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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как установить иконки действий для QTextEdit?  (Прочитано 4471 раз)
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« : Декабрь 13, 2013, 19:52 »

В теме под "действиями" имеются ввиду qactions, которые видны при вызове контекстного меню Улыбающийся
Записан

kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #1 : Декабрь 13, 2013, 20:31 »

наверное только если свое меню делать, вряд ли можно получить доступ к стандартному. наследуешься и переопределяешь createStandardContextMenu().
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #2 : Декабрь 13, 2013, 21:11 »

Посмотрел исходники и нашел класс, который и создает менюшку QTextEdit: тык!

Вот если бы можно было поместить свои иконки в "тема" (theme) и назвать их как их аналоги (edit-*) Улыбающийся
Записан

Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #3 : Декабрь 13, 2013, 21:30 »

Вот если бы можно было поместить свои иконки в "тема" (theme) и назвать их как их аналоги (edit-*) Улыбающийся
Попробуйте:
void QIcon::setThemeSearchPaths ( const QStringList & paths ) [static]
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #4 : Декабрь 13, 2013, 21:39 »

У меня винда, так что не получится Улыбающийся
Записан

kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #5 : Декабрь 13, 2013, 22:58 »

а если как-то так?
Код
C++ (Qt)
QMenu *MyTextEdit::createStandardContextMenu()
{
   QMenu *menu = QTextEdit::createStandardContextMenu();
   // пробегаешься по экшенам и выставляешь им иконки
   return menu;
}
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #6 : Декабрь 13, 2013, 23:58 »

То, что нужно!
Только можно и другой метод переопределить Улыбающийся

С определением экшенов проблемка - text() возвращает полное имя, например, "Вырезать      Ctrl+X"
Пытался вернуть тему иконок у экшена, предполагая, что может вернется "edit-cut" - не получилось
Попробовал смотреть комбинации (shortcut) и по комбинациям определять какую иконку подсовывать - комбинации пустые возвращаются
Можно так попробовать, но это хардкор Улыбающийся
Код
C++ (Qt)
   void MyTextEdit::contextMenuEvent( QContextMenuEvent * event )
   {
       QMenu * menu = createStandardContextMenu();
 
       QList < QAction * > actions = menu->actions();
       actions[0]->setIcon( QIcon( ":/undo" ) );
 
       menu->exec( event->globalPos() );
       menu->deleteLater();
   }
« Последнее редактирование: Декабрь 14, 2013, 00:02 от gil9red » Записан

kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #7 : Декабрь 14, 2013, 00:20 »

я думаю лучше все-таки переопределять именно createStandardContextMenu() (или его перегрузку с параметром), а обработку события контекстного меню оставить дефолтной
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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