2013-04-03 53 views
1

我正在顯示QTableWidget,並希望它在此表中的某個項目被選中並且用戶在QTableWidget區域之外單擊後消失。QWidget在點擊沒有消失後消失

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

這條線做選擇項目後我想要的。這是一種讓小部件在沒有進行子類化之後不點擊就消失的方法(例如,我可以繼承子類並編寫自己的lostfocus事件處理程序,但沒有子類化會更好)?

+1

你有一個周邊容器?在那裏實現一個事件,而你的小部件已經打開了...... –

+0

讓我們假設,你有MainWidget,它包含了它裏面的所有東西。它點擊了()信號。將它連接到某個插槽並在該插槽中隱藏tableWidget(tableWidget() - > hide()) – Shf

+0

@ bash.d基於Ur的想法我把QTableWidget放到QWidget中,並創建後者Qt :: Popup – Littlebitter

回答

0

我的解決辦法是把QTableWidget的到了QWidget並取得後者的Qt ::彈出窗口 - 一個它的行爲正是我需要

0

這可能不是一個非常優雅的解決方案,但它可能工作:

  1. 子類QTableWidget
  2. 確保表構件具有鍵盤焦點,而你顯示它。
  3. 重新實現void QWidget::focusOutEvent (QFocusEvent * event)(關閉表窗口小部件,當你失去焦點)
+0

是的,關於這個變體我寫過我的問題和問題是我可以避免它=) – Littlebitter

1

讓我們假設,你有MainWidget,包含在其內的一切。它有clicked()信號。連接是一些插槽,該插槽隱藏tableWidget(tableWidget()->hide()

+0

我認爲這個,但它不會工作如果用戶將點擊主窗口小部件外部 – Littlebitter