Russian Qt Forum
Июня 15, 2025, 19:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Копирование текста из QMessagebox::about  (Прочитано 5036 раз)
vizir1989
Гость
« : Июня 04, 2012, 08:30 »

Доброго дня, столкнулся со следующей проблемой. У меня есть QMessagebox::about
Код:
QString aboutBPO = "<b>text<b/>";
QMessageBox::about( this, tr("About Client BPO"), aboutBPO);

Под линем можно выделить и скопировать содержимое окна и скопировать в буфер обмена.
Под виндой данной возможности нет. Как сделать так, чтобы под виндой QMessagebox::about так же могло копироваться?
« Последнее редактирование: Июня 06, 2012, 15:45 от vizir1989 » Записан
Serr500
Гость
« Ответ #1 : Июня 04, 2012, 09:28 »

Никак. Свой диалог создавайте.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #2 : Июня 04, 2012, 11:50 »

тэг выделения жирным закрыт неправильно Улыбающийся
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igore
Гость
« Ответ #3 : Июня 04, 2012, 12:41 »

Под Windows можно копировать текст MessageBox-ов через Ctrl+C, работает почти на всех диалогах.
Цитировать
---------------------------
About Client BPO
---------------------------
<b>text</b>
---------------------------
OK   
---------------------------
Записан
spirits25
Гость
« Ответ #4 : Июня 04, 2012, 16:53 »

Никак. Свой диалог создавайте.
Да. И используйте примерно так
Код:
text->setTextInteractionFlags (text->textInteractionFlags()
                                         | QtCore::Qt::TextSelectableByMouse)
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #5 : Июня 04, 2012, 17:21 »

Код
C++ (Qt)
#ifdef Q_OS_WIN32
#include <QProxyStyle>
 
class TextCopyiableProxyStyle : public QProxyStyle
{
 public:
   virtual int styleHint(StyleHint hint, const QStyleOption *option = 0,
                 const QWidget *widget = 0, QStyleHintReturn *returnData = 0) const
   {
       Qt::TextInteractionFlags add = 0;
 
       if(hint == QStyle::SH_MessageBox_TextInteractionFlags)
           add = Qt::TextSelectableByMouse;
 
       return QProxyStyle::styleHint(hint, option, widget, returnData) | add;
   }
};
#endif
 
int main(int argc, char *argv[])
{
   QApplication app(argc, argv);
 
#ifdef Q_OS_WIN32
   app.setStyle(new TextCopyiableProxyStyle);
#endif
...
   return app.exec();
}
 

И если тебе надо консистентно на всех платформах, то убери ifdef Q_OS_WIN32
« Последнее редактирование: Июня 04, 2012, 17:28 от Alex Custov » Записан
vizir1989
Гость
« Ответ #6 : Июня 06, 2012, 15:43 »

Никак. Свой диалог создавайте.
Да. И используйте примерно так
Код:
text->setTextInteractionFlags (text->textInteractionFlags()
                                         | QtCore::Qt::TextSelectableByMouse)

Спасибо, помогло.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.046 секунд. Запросов: 23.