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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Можно ли отсортировать список панелей инструментов?  (Прочитано 2857 раз)
voltron
Гость
« : Декабрь 23, 2011, 20:29 »

В приложении несколько панелей инструментов. Если щелкнуть правой клавишей мыши на пустом месте панели — появится меню со списком всех доступных панелей, где можно часть из включить или отключить. Можно ли как-то этот список отсортировать в алфавитном порядке?

Если это важно, панели созданы в design-time при помощи Qt Designer.
Записан
alexman
Гость
« Ответ #1 : Декабрь 23, 2011, 21:25 »

Переопределяйте void QWidget::contextMenuEvent ( QContextMenuEvent * event ) [virtual protected]
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #2 : Декабрь 24, 2011, 11:52 »

Переопределяйте void QWidget::contextMenuEvent ( QContextMenuEvent * event ) [virtual protected]
Ну и зачем ты это советуешь? Ведь неправильно.
Перегружать нужно QMainWindow::createPopupMenu():
Код
C++ (Qt)
static bool cmpByText( QAction* a, QAction* b )
{
return QString::localeAwareCompare( a->text(), b->text() ) < 0;
}
 
QMenu* MainWindow::createPopupMenu()
{
QMenu* menu = QMainWindow::createPopupMenu();
       QList< QAction* > al = menu->actions();
 
if( !al.isEmpty() )
       {
  qSort( al.begin(), al.end(), cmpByText );
  foreach( QAction* a, al ) menu->addAction( a );
       }
 
return menu;
}
 
Записан

Qt 5.11/4.8.7 (X11/Win)
alexman
Гость
« Ответ #3 : Декабрь 24, 2011, 21:49 »

Ведь неправильно.
Чем же неправильный? Улыбающийся Конечно, переопределить createPopupMenu более правильно (ранее не заметил).
« Последнее редактирование: Декабрь 25, 2011, 22:54 от alexman » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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