【发布时间】:2016-03-12 22:40:19
【问题描述】:
我正在考虑显示QMenu 以响应用户点击QLabel。所以我尝试了:
菜单.h
#ifndef MENU_H
#define MENU_H
#include <QMenu>
class Menu : public QMenu
{
Q_OBJECT
public:
explicit Menu(QWidget *parent = 0);
signals:
public slots:
};
#endif // MENU_H
菜单.cpp
#include "menu.h"
Menu::Menu(QWidget *parent) :
QMenu(parent)
{
addAction("Action1");
}
应该调用的代码会显示菜单:
QLabel *label = new QLabel("...");
m_menu = new Menu;
label->setContextMenuPolicy(Qt::CustomContextMenu);
connect(label, &QLabel::customContextMenuRequested, m_menu, &Menu::activateWindow);
但它不起作用。我哪里错了?
【问题讨论】:
-
对 Labels 进行交互时要小心,因为这不是他们的设计并且违背了用户的期望。如果用户需要与 Label 交互,但不一定要编辑文本,那么只读 LineEdit 可能会更好。