我已经添加了一个标签作为图像(图标)到Qt中的一个小部件。 我想在用户单击标签上的(左键或右键单击)时显示弹出式菜单。 我该如何做到这一点?请帮助...Qt - 弹出菜单
5
A
回答
6
您需要设置小部件的,然后将customContextMenuRequested
事件连接到某个显示菜单的插槽。
4
如果你想显示每当标签点击(与任何鼠标按钮)的上下文菜单,我想你必须实现自己的Label
类,继承QLabel
和处理弹出在鼠标事件的情况下,您自己的菜单。
这是一个非常简单(但工作)版本:
class Label : public QLabel
{
public:
Label(QWidget* pParent=0, Qt::WindowFlags f=0) : QLabel(pParent, f) {};
Label(const QString& text, QWidget* pParent = 0, Qt::WindowFlags f = 0) : QLabel(text, pParent, f){};
protected :
virtual void mouseReleaseEvent (QMouseEvent * ev) {
QMenu MyMenu(this);
MyMenu.addActions(this->actions());
MyMenu.exec(ev->globalPos());
}
};
本专业Label
类将在弹出菜单中添加到它的所有行动显示。 。
比方说,你的应用程序的主窗口被称为MainFrm
并显示标签(label
这是构造函数是什么样子:
MainFrm::MainFrm(QWidget *parent) : MainFrm(parent), ui(new Ui::MainFrm)
{
ui->setupUi(this);
QAction* pAction1 = new QAction("foo", ui->label);
QAction* pAction2 = new QAction("bar", ui->label);
QAction* pAction3 = new QAction("test", ui->label);
ui->label->addAction(pAction1);
ui->label->addAction(pAction2);
ui->label->addAction(pAction3);
connect(pAction1, SIGNAL(triggered()), this, SLOT(onAction1()));
connect(pAction2, SIGNAL(triggered()), this, SLOT(onAction2()));
connect(pAction3, SIGNAL(triggered()), this, SLOT(onAction3()));
}
0
如果标签是点击,这在逻辑上是一个“文本按钮“而不是” 标签“了。
我会建议使用QToolButton代替,并使用QSS弥补工具按钮的标签。
#define SS_TOOLBUTTON_TEXT(_normal, _hover, _disabled) \
"QToolButton" "{" \
"background:transparent" \
"color:" #_normal ";" \
"}" \
"QToolButton:hover" "{" \
"color:" #_hover ";" \
"}" \
"QToolButton:disabled" "{" \
"color:" #_disabled ";" \
"}"
....
QToolButton *b = new QToolButton; {
b->setToolButtonStyle(Qt::ToolButtonTextOnly);
b->setStyleSheet(SS_TOOLBUTTON_TEXT(blue, red, gray));
b->setText(QString("[%1]").arg(tr("menu"));
}
b->setMenu(menu_to_popup);
connect(b, SIGNAL(clicked()), b, SLOT(showMenu()));
相关问题
- 1. 菜单应该如何弹出 - Qt
- 2. QT中的弹出式菜单
- 3. 弹出颜色菜单中的Qt
- 4. android弹出菜单
- 5. Autocmd弹出菜单
- 6. CSS和HTML水平弹出菜单 - 右侧弹出菜单
- 7. android:弹出菜单,弹出对话框
- 8. QT-菜单退出选项
- 9. Android弹出菜单不加载菜单
- 10. 长按菜单弹出菜单
- 11. CSS弹出菜单与滚动菜单
- 12. 风格QComboBox弹出菜单页边空白Qt 4
- 13. 在QT中为QTableView创建弹出菜单
- 14. gtk 3弹出式菜单
- 15. Matlab多选弹出菜单
- 16. 弹出/下拉菜单
- 17. 装饰弹出菜单
- 18. onitemclicklistener弹出式菜单
- 19. iOS弹出菜单cydia-like
- 20. NSStatusItem与弹出式菜单
- 21. Android弹出式菜单
- 22. Gtkuimanager弹出式子菜单
- 23. 弹出按钮菜单项
- 24. 建议弹出菜单drracket
- 25. RadGrid编辑弹出菜单
- 26. Xamarin.Forms - 弹出式菜单
- 27. 多弹出式菜单
- 28. 弹出菜单错误
- 29. Java GUI弹出式菜单
- 30. Java Swt treeview弹出菜单
你想要什么确切:一个弹出菜单,当请求上下文菜单(右击),或一个弹出菜单,只要标签被点击时,不管它的左边或右边的按钮? – 2011-01-24 06:34:19