Как добавить общую панель навигации в приложение Meego?
При использовании Meego Touch Framework стандарт MApplicationWindow
имеет общую навигационную панель (с переключателем, меню и кнопками закрытия), к которой уже прикреплены.
Например, следующий код:
#include <MApplication>
#include <MApplicationWindow>
int main(int argc, char *argv[]){
MApplication app(argc, argv);
MApplicationWindow w;
w.show();
return app.exec();
}
Создает пустое окно со строкой меню, которая выглядит примерно так (например, кнопка переключателя, меню и кнопка закрытия вверху).
Тем не менее, поскольку документы препятствуют использованию Touch Framework, я хочу избегать его использования, так как бы мне создать похожее окно, используя только стандартный API?
2 ответа
Как бы я это реализовал, вероятно, будет фиксированная высота, переменная ширина QHBoxLayout с коэффициентом растяжения для тех индексов, которые в этом нуждаются. Затем я бы просто использовал QPushButton и QCombobBox для виджетов и завершил их с помощью собственной таблицы стилей и значков. Затем я обернул бы их внутри аккуратного маленького пользовательского виджета, который я мог бы повторно использовать в своем классе основного вида.
Основным представлением должен быть класс окна, который будет содержать виджет панели навигации поверх QVBoxLayout, а фактический контент - под ним. Нижний индекс будет иметь растягивающий фактор, так что верхний индекс всегда будет наверху.
Я не совсем помню, как должен вести себя UX на телефоне Meego, но именно так я бы создал похожую навигационную панель.
Я бы просто пошел с классом QMainWindow, так как у этого класса уже есть меню, панели инструментов, строка состояния aso.
Однако вы должны позаботиться о переключении ориентации самостоятельно (я вижу, что панель инструментов в портретном режиме находится внизу, а в ландшафтном режиме - сверху).
Этого можно достичь, установив правильное значение Qt::ToolbarArea.
Стиль кнопок и самого окна можно установить с помощью таблицы стилей Qt.