QTableWidget、cellClicked和cellDoubleClicked

QTableWidget、cellClicked和cellDoubleClicked,qt,qtablewidget,Qt,Qtablewidget,我有一个带有行选择的QTableWidget,我试图处理3个信号: 蜂鸣器 细胞双击 customContextMenuRequested 代码中的事情似乎很好:我考虑了连接语法、类型参数是否正确和匹配,等等;更具体地说,我“知道”代码是正确的,因为我有以下情况: 如果我将3个信号连接到各自的插槽,则只有单击和上下文菜单可以工作 如果我每次编译代码并运行程序时只连接一个信号,那么该信号工作正常(对于其中3个) 如果我连接了单键单击信号和上下文菜单,为双击的connect宏添加注释,它们工作

我有一个带有行选择的QTableWidget,我试图处理3个信号:

  • 蜂鸣器
  • 细胞双击
  • customContextMenuRequested
代码中的事情似乎很好:我考虑了连接语法、类型参数是否正确和匹配,等等;更具体地说,我“知道”代码是正确的,因为我有以下情况:

  • 如果我将3个信号连接到各自的插槽,则只有单击和上下文菜单可以工作
  • 如果我每次编译代码并运行程序时只连接一个信号,那么该信号工作正常(对于其中3个)
  • 如果我连接了单键单击信号和上下文菜单,为双击的connect宏添加注释,它们工作得很好。双击和上下文菜单也是如此
但是,如果我连接了单击和双击,则我的自定义插槽不会处理双击

为了澄清一下,每个信号都有一个不同的插槽,正如我在上面所说的,如果我只连接其中一个,并在代码中注释另外两个,它们工作得很好

所以我的问题是: cellClicked和cellDoubleClick同时工作时是否存在任何错误?我是否必须设置一些标志、属性或属于QTableWidget的任何东西

我的点子快用完了,谢谢你的帮助

此外,也许代码应该有帮助:

表和插槽声明:

QTableWidget * table;

public slots:
  void tableChange(int row, int column);
  void tableChangeDbl(int row, int column);
  void PopupMenuTableShow(const QPoint &);
连接:

  connect(table, SIGNAL(cellDoubleClicked(int, int)), this, SLOT(tableChangeDbl(int, int)));
  connect(table, SIGNAL(cellClicked(int, int)), this, SLOT(tableChange(int, int)));
  connect(table, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(PopupMenuTableShow(const QPoint &)));

显示您在每个插槽中所做的事情会很有用(主要是单次单击。假设您在单击时显示一个消息框,小部件会失去焦点,双击永远不会被触发…)好的,特罗帕,我认为您做到了。我在插槽中对代码进行了注释,只留下了调试跟踪,它正在工作。事实上,我不能在这里显示代码,因为它是一个由组件和业务逻辑等组成的大网络,所以我必须深入到内部,看看谁在关注焦点(例如,如果我单击,我执行的一项操作是禁用和启用某组操作,所以可能是类似的)。我将尝试找到它并解决它,然后在这里更新结果。非常感谢。