Название: Как узнать высоту строки меню? Отправлено: OS2 от Октябрь 26, 2008, 00:10 Всем доброго времени суток!
Подскажите новичку, как узнать высоту строки меню, созданного при помощи QMenu? Название: Re: Как узнать высоту строки меню? Отправлено: Karl-Philipp от Октябрь 26, 2008, 08:33 Цитировать height : const int This property holds the height of the widget excluding any window frame. See the Window Geometry documentation for an overview of window geometry. Access functions: int height () const See also geometry, width, and size. Название: Re: Как узнать высоту строки меню? Отправлено: OS2 от Октябрь 26, 2008, 13:01 height () я попробовал в первую очередь, но она не возвращает правильную высоту строки меню. Эксперементальным методом было установленно, что у меня выстоа меню, созданного через QMenu = 20 пикселям, height() - вернула 30.
В чем проблема, что я не так деляю? Название: Re: Как узнать высоту строки меню? Отправлено: Karl-Philipp от Октябрь 26, 2008, 16:21 взял первый попавшийся пример с интерфейсом из qt. Посмотрел в дизайнере высоту меню - 21.
проверил из программы: Код: qDebug("menu height is %d", menubar->height()); ... Эксперементальным методом было установленно, что у меня выстоа меню, созданного через QMenu = 20 пикселям, height() - вернула 30. В чем проблема, что я не так деляю? а что это за эксперементальный путь? Название: Re: Как узнать высоту строки меню? Отправлено: OS2 от Октябрь 26, 2008, 17:56 Да я все понимаю, что работать то должно, вот только почему не работает?...
Вот так я создаю менюшку (для краткости приведу только часть кода): Код: m_pAboutQt = new QAction( tr("&About Qt"), this ); Цитировать а что это за эксперементальный путь? В фотошопе линейкой померил... ;DНазвание: Re: Как узнать высоту строки меню? Отправлено: ритт от Октябрь 26, 2008, 19:38 высота строки QMenu будет зависеть от QAction этой строки.
если опустить некоторые детали, код должен быть примерно следующим: Код: QMenu *menu = m_pMainMenu; // меню, в котором ищем высоту строки (акшена) собственно, этим можно ограничиться, а можно добавить ещё проверку на QWidgetAction и взятие размеров виджета... советую почитать исходники qmenu.cpp Название: Re: Как узнать высоту строки меню? Отправлено: lit-uriy от Октябрь 26, 2008, 20:47 2 OS2, таких эксперементаторов троли тоже тоже предвидели и сделали инструмент %QTDIR%/pixeltool.exe
он позволяет как увеличительным стеклом разглядывать окошки и умеет мерить растояния между пикселями. ;) Название: Re: Как узнать высоту строки меню? Отправлено: OS2 от Октябрь 26, 2008, 21:09 Спасибо, все работает! ;D
ЗЫ: вот только строку: Код: menu->initStyleOption(&opt, action); Цитировать error C2248: 'QMenu::initStyleOption' : cannot access protected member declared in class 'QMenu' Название: Re: Как узнать высоту строки меню? Отправлено: ритт от Октябрь 26, 2008, 21:14 а почитать о том, что удаляешь - не?
ну, работает - и работает...разбирайся... Название: Re: Как узнать высоту строки меню? Отправлено: OS2 от Октябрь 26, 2008, 21:35 Постепенно во всем разберусь, пока на это времени нет....
Название: Re: Как узнать высоту строки меню? Отправлено: OS2 от Октябрь 27, 2008, 12:23 Для получения высоты строки меню, вполне достаточно этого:
Код: QSize size; ЗЫ: еще раз большое спасибо Константину за помощ. Название: Re: Как узнать высоту строки меню? Отправлено: ритт от Октябрь 27, 2008, 13:26 нет, недостаточно.
во-первых, не учитываются размеры иконки, если таковая имеется; во-вторых, стайлопшион необходимо инициализировать значениями соотв.виджета. Название: Re: Как узнать высоту строки меню? Отправлено: OS2 от Октябрь 27, 2008, 13:51 Иконки нет.
Инициализируем так(?): Код: int MainWindow::GetMenuHieght() Название: Re: Как узнать высоту строки меню? Отправлено: ритт от Июль 17, 2009, 13:27 ыыы...такая же задача - и первое, что нашёл по поиску - мой же ответ :)
Название: Re: Как узнать высоту строки меню? Отправлено: ритт от Июль 19, 2009, 15:32 мля, чё-т я в ступоре...
требуется *задать* высоту конкретного менюайтема. бегло пошерстив сорцы нашёл установку размеров при пересчёте геометрии - если action является widgetAction'ом. НО затем связанному виджету снова устанавливаются левый размер и айтем в итоге имеет ту же высоту, что и его соседи (( есть идеи? |