Сделать QDialog только для чтения, но с возможностью выбора текста

Отказ от ответственности: я не программист Qt, я просто спрашиваю, может ли кто-нибудь решить проблему о браузере БД для SQLite.

Итак, виджет EditDialog расширяет QDialog. Как описано в проблеме, в некоторых сценариях этот виджет доступен только для чтения, но было бы здорово, если бы его текстовое содержимое по-прежнему можно было выбрать.

Есть два варианта использования:

  • выделение текста мышкой
  • мигающий курсор, выделение текста с клавиатуры Shift + стрелки

текущее решение исправляет только первый случай. Каретка не мигает, и выбор клавиатуры не работает. Можно ли это улучшить?


person Gras Double    schedule 19.09.2017    source источник
comment
У вас была возможность проверить ответ, который я дал? Я сам являюсь пользователем sqlitebrower, поэтому мне было бы интересно узнать, было ли мое предложение полезным.   -  person ekhumoro    schedule 23.09.2017
comment
Разработчики еще не сообщали об этом, но они знают об этом сообщении SO, и проблема отслеживается для следующего выпуска DB4S.   -  person Gras Double    schedule 24.09.2017
comment
Я только что нашел эту ветку форума по этой проблеме: qtcentre.org/ темы/.   -  person Gras Double    schedule 09.12.2017


Ответы (1)


Предполагая, что текстовое поле представляет собой QTextEdit или QPlainTextEdit, вы сможете исправить это, изменив флаги взаимодействия с текстом. Попробуйте что-то вроде этого:

ui->editorText->setTextInteractionFlags(
    Qt.TextSelectableByMouse | Qt.TextSelectableByKeyboard)
person ekhumoro    schedule 19.09.2017
comment
Спасибо. Я только что применил это к браузеру БД для SQLite, и он работает, как и ожидалось. - person Gneuromante; 06.12.2017
comment
Только предостережение, курсор не мигает. Но, видимо, лучшего решения нет. - person Gras Double; 09.12.2017