Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: voltron от Декабрь 23, 2011, 20:29



Название: Можно ли отсортировать список панелей инструментов?
Отправлено: voltron от Декабрь 23, 2011, 20:29
В приложении несколько панелей инструментов. Если щелкнуть правой клавишей мыши на пустом месте панели — появится меню со списком всех доступных панелей, где можно часть из включить или отключить. Можно ли как-то этот список отсортировать в алфавитном порядке?

Если это важно, панели созданы в design-time при помощи Qt Designer.


Название: Re: Можно ли отсортировать список панелей инструментов?
Отправлено: alexman от Декабрь 23, 2011, 21:25
Переопределяйте void QWidget::contextMenuEvent ( QContextMenuEvent * event ) [virtual protected]


Название: Re: Можно ли отсортировать список панелей инструментов?
Отправлено: GreatSnake от Декабрь 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;
}
 


Название: Re: Можно ли отсортировать список панелей инструментов?
Отправлено: alexman от Декабрь 24, 2011, 21:49
Ведь неправильно.
Чем же неправильный? :) Конечно, переопределить createPopupMenu более правильно (ранее не заметил).