1

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

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

选择项目后,这条线做我想要的。这是一种让小部件在没有子类化的情况下单击而不是消失的方法(例如,我可以子类化并编写自己的 lossfocus 事件处理程序,但没有子类化会更好)?

4

3 回答 3

1

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

于 2013-04-03T13:12:46.317 回答
0

这可能不是一个非常优雅的解决方案,但它可能会起作用:

  1. 子类QTableWidget
  2. 确保表格小部件在显示时具有键盘焦点。
  3. 重新实现void QWidget::focusOutEvent ( QFocusEvent * event )(当你失去焦点时关闭表格小部件)
于 2013-04-03T12:26:23.873 回答
0

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

于 2013-04-04T11:13:29.907 回答