似乎在Qt 5.6和Windows 7下有一个重大变化(我在Windows 10下没有问题):
在Qt 5.4 / windows7下使用以下代码我没有问题:
// .h
class XXX: public QTableView
{
Q_OBJECT
QMenu *menu_;
void init();
private Q_SLOTS:
void showOrderDlg(const QModelIndex & index);
void ActionGridContextMenu(QAction* action);
};
// .cpp
void XXX::init(QPoint)
{
setContextMenuPolicy(Qt::CustomContextMenu);
connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showContextMenu(QPoint)));
menu_ = new QMenu(this);
(menu_->addAction("Start"))->setIcon(QIcon(":/Images/Resources/Image/1.png"));
(menu_->addAction("Stop"))->setIcon(QIcon(":/Images/Resources/Image/2.png"));
connect(menu_, SIGNAL(triggered(QAction*)),this, SLOT(ActionGridContextMenu(QAction*)));
}
void XXX::showContextMenu(QPoint)
{
menu_->exec(QCursor::pos());
}
void XXX::ActionGridContextMenu(QAction* action)
{
}
我已更新到Qt 5.6,现在没有菜单显示......
似乎没有从QTableView
派生的课程没有受到影响。
我在这里做错了吗?
编辑:查看我对修复的最后评论