【问题标题】:How can I make horizontal drop down menu when button clicked?单击按钮时如何制作水平下拉菜单?
【发布时间】:2016-03-07 19:07:33
【问题描述】:

当单击 QPushButton 时,我正在尝试制作具有水平方向的下拉弹出菜单, 菜单项只是图标,没有快捷方式文本和菜单项文本。 Qt可以吗?
我试过谷歌搜索,但我找不到解决方案,也没有在 Qt 文档中。

在 ascii 绘图中,水平下拉菜单如下所示:

按钮
|图片0 |图片1 |图片2 |图3 |

我已将相关部分编码如下:

QImage sourceImage(":/Res/layout/layout_wide_select.png");
int w = sourceImage.width() / 7;
int h = sourceImage.height();

QImage lay5= sourceImage.copy(0, 0, w, h);
QImage lay7= sourceImage.copy(w, 0, w, h);
....
m_menuWide = new QMenu(this);
QAction *actLay5 = m_menuWide->addAction(QIcon(QPixmap::fromImage(lay5)), "5view");
QObject::connect(actLay5, SIGNAL(triggered(bool)), this, SLOT(onSplitWideButtonClicked()));
actLay5->setData(QVariant(0));
QAction *actLay7 = m_menuWide->addAction(QIcon(QPixmap::fromImage(lay7)), "7view");
QObject::connect(actLay7, SIGNAL(triggered(bool)), this, SLOT(onSplitWideButtonClicked()));
actLay7->setData(QVariant(1));
...
m_btnSplitWide->setMenu(m_menuWide);

QMenu中好像没有setMenuDireciton()这样的方法,或者也没有 QMenu 属性可用于 QMenu 样式...

如果有人知道解决方案,我将不胜感激..

谢谢!!

【问题讨论】:

    标签: css qt


    【解决方案1】:

    您可以查看QWidgetAction 这会将小部件添加到您的 QMenu。您可以创建您的操作的 QWidget(可能是工具栏)并将其放在 QWidgetAction 上。并将 widgetaction 添加到您的 QMenu。 示例代码:

    QMenu menu;
    QToolBar toolbar;
    toolbar.addAction("A");
    toolbar.addAction("B");
    QWidgetAction act(&toolbar);
    act.setDefaultWidget(&toolbar);
    menu.addAction(&act);
    menu.exec();
    

    您只能使用您的图标更改操作“A”和“B”。

    【讨论】:

    • 谢谢!我已按照您的建议重新编码,并成功获得了水平弹出窗口。
    • 如果可以,请设置为固定。我的答案左侧有一个“检查标志”,请检查标志,以便此线程将按回答关闭。
    猜你喜欢
    • 1970-01-01
    • 2012-11-03
    • 2022-07-13
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多