qDebug("menu height is %d", menubar->height());
m_pAboutQt = new QAction( tr("&About Qt"), this ); m_pAboutQt->setIcon( QIcon(":/RES/copy.png") ); m_pAboutQt->setShortcut( tr("Ctrl+Q") ); m_pAboutQt->setStatusTip( tr("About Qt...") ); connect( m_pAboutQt, SIGNAL(triggered()), this, SLOT(About()) ); m_pMainMenu = menuBar()->addMenu( tr("&File") ); m_pMainMenu->addAction(m_pAboutAction); m_pMainMenu->addAction(m_pAboutQt); iMenuH = m_pMainMenu->height(); //Здесь я пытаюсь получить его высоту, возвращает - 30
QMenu *menu = m_pMainMenu; // меню, в котором ищем высоту строки (акшена) const int hmargin = menu->style()->pixelMetric(QStyle::PM_MenuHMargin, 0, menu), vmargin = menu->style()->pixelMetric(QStyle::PM_MenuVMargin, 0, menu), icone = menu->style()->pixelMetric(QStyle::PM_SmallIconSize, 0, menu); QAction *action = m_pAboutQt; // акшен, для которого ищем высоту QFontMetrics fm(action->font().resolve(menu->font())); QFontMetrics qfm = menu->fontMetrics(); QStyleOptionMenuItem opt; menu->initStyleOption(&opt, action); opt.rect = menu->rect(); QSize sz; if (action->isSeparator()) { sz = QSize(2, 2); } else { sz.setHeight(qMax(fm.height(), qfm.height())); QIcon is = action->icon(); if (!is.isNull()) { QSize is_sz = QSize(icone, icone); if (is_sz.height() > sz.height()) sz.setHeight(is_sz.height()); } } sz = menu->style()->sizeFromContents(QStyle::CT_MenuItem, &opt, sz, q);
menu->initStyleOption(&opt, action);
QSize size; QStyleOptionMenuItem opt; QMenu *menu = m_pMainMenu; QFontMetrics fm( m_pMainMenu->font().resolve(menu->font()) ); QFontMetrics qfm = menu->fontMetrics(); opt.rect = menu->rect(); size.setHeight( qMax(fm.height(), qfm.height()) ); size = menu->style()->sizeFromContents(QStyle::CT_MenuItem, &opt, size, this);
int MainWindow::GetMenuHieght(){ QSize size; QStyleOptionMenuItem opt; QMenu *menu = m_pMainMenu; QFontMetrics fm( m_pMainMenu->font().resolve(menu->font()) ); QFontMetrics qfm = menu->fontMetrics(); opt.initFrom( menu ); opt.rect = menu->rect(); size.setHeight( qMax(fm.height(), qfm.height()) ); size = menu->style()->sizeFromContents(QStyle::CT_MenuItem, &opt, size, this); return size.height();}