点击不上面后,让QWidget消失

时间:2013-04-03 12:04:09

标签: c++ qt qwidget

我正在显示QTableWidget,并希望它在选中此表中的某个项目并且用户在QTableWidget区域外单击后消失。

connect(tableWidget, SIGNAL(itemClicked(QTableWidgetItem *)), tableWidget, SLOT(close()));

此行在选择项目后执行我想要的操作。它是一种让小部件在没有子类化的情况下单击它之后消失的方式(例如,我可以子类化并编写我自己的lostfocus事件处理程序,但没有子类化会更好)?

3 个答案:

答案 0 :(得分:1)

让我们假设您有MainWidget,其中包含其中的所有内容。它有clicked()信号。将其连接到某个插槽并在该插槽中隐藏tableWidget(tableWidget()->hide()

答案 1 :(得分:0)

这可能不是一个非常优雅的解决方案,但它可能有效:

  1. 子类QTableWidget
  2. 确保表格小部件在显示时具有键盘焦点。
  3. 重新实现void QWidget::focusOutEvent ( QFocusEvent * event )(当您失去焦点时关闭表格小部件)

答案 2 :(得分:0)

我的解决方案是将QTableWidget放入QWidget并制作后者Qt :: Popup - 它完全符合我的需要