本文整理汇总了C++中QMenu::width方法的典型用法代码示例。如果您正苦于以下问题:C++ QMenu::width方法的具体用法?C++ QMenu::width怎么用?C++ QMenu::width使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QMenu
的用法示例。
在下文中一共展示了QMenu::width方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: showToolBarStylePopupMenu
void PdfViewer::showToolBarStylePopupMenu(const QPoint &pos)
{
QMenu *popupMenu = new QMenu(this);
popupMenu->setAttribute(Qt::WA_DeleteOnClose);
popupMenu->move(mapToGlobal(QPoint(0,0)) + pos);
QWidgetAction *iconOnlyAction = new QWidgetAction(popupMenu);
QRadioButton *iconOnlyRadio = new QRadioButton(tr("&Icons Only"), popupMenu);
iconOnlyAction->setDefaultWidget(iconOnlyRadio);
QWidgetAction *textOnlyAction = new QWidgetAction(popupMenu);
QRadioButton *textOnlyRadio = new QRadioButton(tr("&Text Only"), popupMenu);
textOnlyAction->setDefaultWidget(textOnlyRadio);
QWidgetAction *textBesideIconAction = new QWidgetAction(popupMenu);
QRadioButton *textBesideIconRadio = new QRadioButton(tr("Text &Alongside Icons"), popupMenu);
textBesideIconAction->setDefaultWidget(textBesideIconRadio);
QWidgetAction *textUnderIconAction = new QWidgetAction(popupMenu);
QRadioButton *textUnderIconRadio = new QRadioButton(tr("Text &Under Icons"), popupMenu);
textUnderIconAction->setDefaultWidget(textUnderIconRadio);
QButtonGroup *popupButtonGroup = new QButtonGroup(popupMenu);
popupButtonGroup->addButton(iconOnlyRadio);
popupButtonGroup->addButton(textOnlyRadio);
popupButtonGroup->addButton(textBesideIconRadio);
popupButtonGroup->addButton(textUnderIconRadio);
popupButtonGroup->setId(iconOnlyRadio, 0);
popupButtonGroup->setId(textOnlyRadio, 1);
popupButtonGroup->setId(textBesideIconRadio, 2);
popupButtonGroup->setId(textUnderIconRadio, 3);
connect(popupButtonGroup, SIGNAL(buttonClicked(int)), this, SLOT(slotChangeToolBarStyle(int)));
popupMenu->addAction(iconOnlyAction);
popupMenu->addAction(textOnlyAction);
popupMenu->addAction(textBesideIconAction);
popupMenu->addAction(textUnderIconAction);
popupMenu->setContentsMargins(5, 0, 5, 0);
QSettings settings;
settings.beginGroup("MainWindow");
const int toolBarStyleNumber = settings.value("ToolBarStyle", 0).toInt();
switch (toolBarStyleNumber)
{
case 0: iconOnlyRadio->setChecked(true); break;
case 1: textOnlyRadio->setChecked(true); break;
case 2: textBesideIconRadio->setChecked(true); break;
case 3: textUnderIconRadio->setChecked(true); break;
}
settings.endGroup();
popupMenu->show();
// make sure that the popupMenu stays completely inside the screen (must be done after popupMenu->show() in order to have the correct width)
const int desktopWidth = QApplication::desktop()->availableGeometry(this).width();
if (popupMenu->x() + popupMenu->width() > desktopWidth)
popupMenu->move(desktopWidth - popupMenu->width(), popupMenu->y());
}
示例2: testContextMenu
void FlameGraphViewTest::testContextMenu()
{
int targetWidth = 0;
int targetHeight = 0;
{
QMenu testMenu;
testMenu.addActions(QmlProfilerTool::profilerContextMenuActions());
testMenu.addSeparator();
testMenu.show();
QTest::qWaitForWindowExposed(testMenu.window());
targetWidth = testMenu.width() / 2;
int prevHeight = testMenu.height();
QAction dummy(QString("target"), this);
testMenu.addAction(&dummy);
targetHeight = (testMenu.height() + prevHeight) / 2;
}
QTimer timer;
timer.setInterval(50);
timer.start();
connect(&timer, &QTimer::timeout, this, [&]() {
auto activePopup = qApp->activePopupWidget();
if (!activePopup || !activePopup->windowHandle()->isExposed())
return;
QTest::mouseMove(activePopup, QPoint(targetWidth, targetHeight));
QTest::mouseClick(activePopup, Qt::LeftButton, Qt::NoModifier,
QPoint(targetWidth, targetHeight));
if (!manager.isRestrictedToRange()) {
// click somewhere else to remove the menu and return to outer function
QTest::mouseClick(qApp->activePopupWidget(), Qt::LeftButton, Qt::NoModifier,
QPoint(500, 500));
}
});
QTest::mouseMove(&view, QPoint(250, 250));
QSignalSpy spy(&view, SIGNAL(showFullRange()));
QContextMenuEvent event(QContextMenuEvent::Mouse, QPoint(250, 250));
QVERIFY(qApp->notify(&view, &event));
QCOMPARE(spy.count(), 0);
manager.restrictToRange(1, 10);
QVERIFY(qApp->notify(&view, &event));
if (spy.count() != 1)
QTRY_COMPARE(spy.count(), 1);
}
示例3: showMenu
void QDesignerMenuBar::showMenu(int index)
{
if (index < 0 && m_currentIndex >= 0)
index = m_currentIndex;
if (index < 0 || index >= realActionCount())
return;
m_currentIndex = index;
QAction *action = currentAction();
if (action && action->menu()) {
if (m_lastMenuActionIndex != -1 && m_lastMenuActionIndex != index) {
hideMenu(m_lastMenuActionIndex);
}
m_lastMenuActionIndex = index;
QMenu *menu = action->menu();
const QRect g = actionGeometry(action);
if (!menu->isVisible()) {
if ((menu->windowFlags() & Qt::Popup) != Qt::Popup)
menu->setWindowFlags(Qt::Popup);
menu->adjustSize();
if (layoutDirection() == Qt::LeftToRight) {
menu->move(mapToGlobal(g.bottomLeft()));
} else {
// The position is not initially correct due to the unknown width,
// causing it to overlap a bit the first time it is invoked.
const QSize menuSize = menu->size();
QPoint point = g.bottomRight() - QPoint(menu->width(), 0);
menu->move(mapToGlobal(point));
}
menu->setFocus(Qt::MouseFocusReason);
menu->raise();
menu->show();
} else {
menu->raise();
}
}
}
示例4: actionFontMetrics
QMenu *TikzCommandInserter::getMenu(const TikzCommandList &commandList)
{
QMenu *menu = new QMenu(commandList.title, m_parentWidget);
const int numOfCommands = commandList.commands.size();
QAction *action = new QAction("test", menu);
int whichSection = 0;
// get left margin of the menu (to be added to the minimum width of the menu)
menu->addAction(action);
QFont actionFont = action->font();
actionFont.setPointSize(actionFont.pointSize() - 1);
QFontMetrics actionFontMetrics(actionFont);
int menuLeftMargin = menu->width() - actionFontMetrics.boundingRect(action->text()).width();
menu->removeAction(action);
int menuMinimumWidth = 0;
for (int i = 0; i < numOfCommands; ++i)
{
const QString name = commandList.commands.at(i).name;
if (name.isEmpty()) // add separator or submenu
{
if (commandList.commands.at(i).type == 0)
{
action = new QAction(menu);
action->setSeparator(true);
menu->addAction(action);
}
else // type == -1, so add submenu; this assumes that the i-th command with type == -1 corresponds with the i-th submenu (see getCommands())
{
menu->addMenu(getMenu(commandList.children.at(whichSection)));
++whichSection;
}
}
else // add command
{
action = new QAction(name, menu);
action->setData(commandList.commands.at(i).number); // link to the corresponding item in m_tikzCommandsList
action->setStatusTip(commandList.commands.at(i).description);
menuMinimumWidth = qMax(menuMinimumWidth, actionFontMetrics.boundingRect(commandList.commands.at(i).description).width());
connect(action, SIGNAL(triggered()), this, SLOT(insertTag()));
connect(action, SIGNAL(hovered()), this, SLOT(updateDescriptionMenuItem()));
menu->addAction(action);
}
}
// if the menu does not only contain submenus, then we add a menu item
// at the bottom of the menu which shows the description of the currently
// highlighted menu item
if (whichSection < menu->actions().size())
{
action = new QAction(this);
action->setSeparator(true);
menu->addAction(action);
action = new QAction(this);
QFont actionFont = action->font();
actionFont.setPointSize(actionFont.pointSize() - 1);
action->setFont(actionFont);
connect(action, SIGNAL(triggered()), this, SLOT(insertTag()));
menu->addAction(action);
// make sure that the menu width does not change when the content
// of the above menu item changes
menu->setMinimumWidth(menuMinimumWidth + menuLeftMargin);
}
return menu;
}