Russian Qt Forum

Qt => Базы данных => Тема начата: crossly от Сентябрь 11, 2008, 10:08



Название: QDataWidgetMapper
Отправлено: crossly от Сентябрь 11, 2008, 10:08
всем привет... есть таблица в mysql... в ней есть поле типа ТЕХТ которое маппится в textEdit... так вот если размер текста в этом поле достаточно большой то данные мапятся очень долго... около 40 сек при размере порядка 40к.... вопрос... почему??.. и как быть..??


Название: Re: QDataWidgetMapper
Отправлено: developer от Сентябрь 11, 2008, 10:56
Попробуй вместо поля типа TEXT использовать поле типа BLOB ну или подобное которое поддерживает твоя база данных, и еще лучше если ты приведеш тут свой код.


Название: Re: QDataWidgetMapper
Отправлено: ритт от Сентябрь 11, 2008, 10:59
textEdit - это QTextEdit ?
а если устанавливать содержимое напрямую (без мускуля и маппера - например, из файла), тормоза тоже есть?


Название: Re: QDataWidgetMapper
Отправлено: crossly от Сентябрь 11, 2008, 11:11
пробовал и блоб... один хер... пробовал без маппера....(выбирал запросом потом вставлял)... то же самое... (QTextEdit)...


Название: Re: QDataWidgetMapper
Отправлено: registrationfedser87 от Сентябрь 11, 2008, 11:37
вот пример загрузки из файла в QTextEdit(взят из стандартного создаваемого приложения), загружает довольно быстро:
Код:
void loadFile(const QString &fileName)
{
      QFile file(fileName);
      if (!file.open(QFile::ReadOnly | QFile::Text)) {
            QMessageBox::warning(this, tr("Application"),
                              tr("Cannot read file %1:\n%2.")
                              .arg(fileName)
                              .arg(file.errorString()));
            return;
      }

      QTextStream in(&file);
      QApplication::setOverrideCursor(Qt::WaitCursor);
      textEdit->setPlainText(in.readAll());
      QApplication::restoreOverrideCursor();
      textEdit->document()->setModified(false);
}


Название: Re: QDataWidgetMapper
Отправлено: ритт от Сентябрь 11, 2008, 11:58
а какая версия Qt?
не знаю как с плэйнтекстом, а с хтмл раньше заметно тормозило


Название: Re: QDataWidgetMapper
Отправлено: registrationfedser87 от Сентябрь 11, 2008, 12:05
версия Qt-4.4.1
заменил строчку
Код:
textEdit->setPlainText(in.readAll());
на
Код:
textEdit->setHtml(in.readAll());
чтобы загрузить и отобразить html-документ-скорость тоже на высоте.


Название: Re: QDataWidgetMapper
Отправлено: crossly от Сентябрь 11, 2008, 12:07
ага ... просёк.... я устанавливаю текст с помощью toHtml... если поставить toPlainText то все гуд... только вот как быть если у меня есть как обычный текст так и html...??


Название: Re: QDataWidgetMapper
Отправлено: registrationfedser87 от Сентябрь 11, 2008, 12:13
Попробуй как я написал выше:
Код:
textEdit->setHtml(in.readAll());


Название: Re: QDataWidgetMapper
Отправлено: crossly от Сентябрь 11, 2008, 12:18
так я же и говорю.... если setHtml то текст в формате хтмл вставляется нормально.... а если обычный текст то жутко тормозит....


Название: Re: QDataWidgetMapper
Отправлено: crossly от Сентябрь 11, 2008, 12:25
все разобрался... всем спасибо... помог Qt::mightBeReachText(const QString &)


Название: Re: QDataWidgetMapper
Отправлено: registrationfedser87 от Сентябрь 11, 2008, 12:25
странно...я через textEdit->setHtml(in.readAll()); вставлял и обычный текстовый файл,скорость тоже была нормальной