2015-09-15 4 views
7

Есть ли способ отображения QMessageBox, который мог бы выбирать текст, чтобы пользователь мог использовать свою мышь или клавиатуру, чтобы как-то выбрать и скопировать ее содержимое? Я знаю, что могу создавать ярлыки, которые это делают, но не уверен в сообщениях. Стандартное окно сообщений в MS Windows, определенно, похоже, не позволяет этого.QMessageBox вы можете выбрать текст из

+0

Как насчет '' SetTextInteractionFlags 'QMessageBox' и установить его в' Qt :: TextSelectableByMouse'? – Gombat

ответ

7

Я предпочитаю, чтобы решить это с помощью таблицы стилей.
Выполнить один раз, и это повлияет на все окна сообщения, созданные в любом месте применения:

qApp->setStyleSheet("QMessageBox { messagebox-text-interaction-flags: 5; }"); 

Я испытание это с Qt 5.5 для OS X, и она работает.

+0

Добавляет ли она существующую таблицу стилей или полностью перезаписывает ее? Я не уверен, что кто-то еще не использовал аналогичный код где-то в этом проекте. – Petr

+0

переопределяет существующие таблицы стилей, применяемые к 'QApplication'. Если вы уже используете таблицы стилей, просто добавьте эту запись в свой файл. –

7

Вам необходимо включить флаг в TextSelectableByMouse взаимодействия:

QMessageBox mb(QMessageBox::NoIcon, "New message", 
       "A lot of text", QMessageBox::Ok, this); 
mb.setTextInteractionFlags(Qt::TextSelectableByMouse); 
int dialogResult = mb.exec(); 
+0

Это не похоже на Qt4. *** ошибка C2039: «setTextInteractionFlags»: не является членом «QMessageBox» *** – drescherjm

+0

Я вижу, что это было добавлено в Qt-5.1. Мне пришлось использовать таблицу стилей, поскольку я не могу использовать Qt5 в приложении, над которым я работаю, из-за сложной зависимости библиотеки. – drescherjm

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