2013-12-20 4 views
1

Как я могу сделать все QLabels в выбранной мыши мыши (Qt :: TextSelectableByMouse) по умолчанию?Может ли textInteractionFlags быть установленным во всех QLabels глобально?

Это не только мои ярлыки, которые меня интересуют, но также, для примера, тот, который используется в QInputDialog, который нельзя выбрать, в то время как тот, который находится в QMessageBox, можно выбрать.

+0

Вы можете подклассифицировать виджеты и иметь только конструктор, который устанавливает правильные флаги и т. Д. – hyde

+0

Но я хочу, чтобы у _ALL_ QLabels это свойство, а не только те, которые я создаю. – Harvey

+0

Если вы не можете, например, выполнить поиск и заменить каждый новый класс QLabel на подкласс и продвигать любые метки в формах '.ui' (обратите внимание: вам не нужно изменять типы указателей, поскольку это подкласс), то единственное решение, о котором я могу думать, - это ответ Павла. Ну, вы также можете скомпилировать пользовательскую версию Qt с этим небольшим изменением в некоторых виджетах. – hyde

ответ

2

Вы можете использовать QApplication::topLevelWidgets, чтобы найти все окна и widget->findChildren<QLabel*>(), чтобы найти все этикетки в окне. Затем вы можете установить соответствующие флаги для каждой метки. Вы должны вызывать эту функцию периодически, но не слишком часто (findChildren может быть медленным). Возможно, вы можете подключиться к сигналу QApplication::focusChanged, обнаружить, когда создается новое окно верхнего уровня, и выполнить проверку для этого окна.

+0

Я не увлекаюсь этим решением, но может быть полезно в ограниченных обстоятельствах и, возможно, в режиме отладки, чтобы гарантировать, что все QLabels установлены правильно. – Harvey

Смежные вопросы