2013-12-20 87 views
1

默認情況下,如何讓應用程序鼠標中的所有QLabel可選(Qt :: TextSelectableByMouse)?可以在全局的所有QLabel上設置textInteractionFlags嗎?

這不僅僅是我感興趣的標籤,還包括例如QInputDialog中使用的標籤,它不可選,而QMessageBox中的標籤可選。

+0

您可以對小部件進行子類化,並擁有設置右標誌等的構造函數。 – hyde

+0

但是我希望_ALL_ QLabels擁有此屬性,而不僅僅是我創建的屬性。 – Harvey

+0

如果你不能做一個搜索 - 替換並將每個'new QLabel'改爲一個子類,並在'.ui'表單中提升任何標籤(注意,你不必改變指針類型,因爲它是子類),那麼我能想到的唯一解決方案就是帕維爾的答案。那麼,你也可以在一些小部件中編譯Qt的自定義版本。 – hyde

回答

2

您可以使用QApplication::topLevelWidgets查找所有窗口,並使用widget->findChildren<QLabel*>()查找窗口中的所有標籤。然後您可以爲每個標籤設置適當的標誌。您需要定期調用此功能,但不要太頻繁(findChildren可能會變慢)。也許您可以連接到QApplication::focusChanged信號,檢測何時創建新的頂級窗口並檢查此窗口。

+0

我並不熱衷於此解決方案,但它可能在有限的情況下很有用,並且可能在調試模式下可用,以確保所有QLabel都已正確設置。 – Harvey

相關問題