2041
|
Программирование / Общий / Ошибка компоновщика
|
: Июль 09, 2014, 14:12
|
Здравствуйте, всем! Прошу помочь мне разобраться с проблемой: Я занимаюсь изучением OpenGL по Суперкниге и пишу примерчики из неё на Qt. К проекту очередного примера мне было необходимо подтянуть несколько хэдэров и исходников из папки examples/common. Но тут столкнулся с ошибкой при компоновке ошибка: undefined reference to `gltTransformPoint' Сослался на свою "пряморукость" и попробовал запустить из под Qt Creator сам пример (без использования Qt) - не успех... Понимаю, что ошибка, скорее всего, пустяковая, но в упор не вижу причины. Предпринимал действия: Запускал предложенный в примере файл проекта MSVC, приписывал расположение glut32 и он работал. В папке примера выполнял qmake -project, в .pro файл прописывал glut32 - ошибка та же. Эти же действия на другом примере дали положительный результат. Во вложении сам пример, общие файлы ко многим примерам из книги, библиотека glut с диска от книги.
|
|
|
2042
|
Qt / Пользовательский интерфейс (GUI) / Re: QGLWidget - потеря буфера на Вындоуз
|
: Июнь 30, 2014, 23:17
|
А как насчёт вести запись всех графических объектов в какой-нибудь image и при перерисовке выводить на экран одного его, а на 109 объектов?
C OpenGL этот подход не катит, не будет он просто так в имедж рендерить (нужно городить типа FBO). Ну и рендер "объект за объектом" совсем не равен "рендеру сцены" (перекрытия и.т.п.) Я тему до конца не изучил, но знаю, что в GL есть какие-то левый и правый буферы ещё. Если они тоже как-то работают с цветами, то их, возможно тоже можно как-то задействовать. Мне кажется, что в любом случае у вас должна быть под рукой дублирующая картинка, которую можно потом оперативно вставить. А как насчёт использования чистого OpenGL? glBegin(QL_QUADS), glVertex? Мне удавалось прорисовать огромное количество треугольников за сравнительно малое время. Мне кажется, что прямое использование OpenGL должно дать значительный прирост производительности. Может быть, скорость полной перерисовки вас устроит при таком подходе.
|
|
|
2045
|
Qt / Общие вопросы / Re: Как реализовать большое число строк в QAbstractTableModel
|
: Июнь 25, 2014, 08:23
|
тьфу. ScrollBar конечно А за размер таблицы взять размер файла, поделённый на текущее количество строк в View Ну и размер строки конечно учитывается. Собственно т.к. самописное - то самому писать поведение клавиш Глаза пока боятся Спасибо за совет. Мне перед реализацией придётся набраться смелости Есть мнение, что для хекс-редактора не подходят айтемвью, лучше взять QAScrollArea и на ней рисовать ручками. Как вариант, можно выдернуть хекс-редактор из креатора, это не сложно делается
Я на данный момент вывожу в таблицу до 250 мб данные в hex. Проблема ещё заключается в том, что вывод hex - это одна из функций программы. Основное её назначение вывод в таблицу значений int, dbl, float, text и др., которые переводятся из т.н. rawData. Так что в моём случае получается, что табличное представление, наверное, оптимальный вариант.
|
|
|
2046
|
Qt / Общие вопросы / Re: Как реализовать большое число строк в QAbstractTableModel
|
: Июнь 24, 2014, 16:56
|
ммм... Я решал эту проблему, создавая собственный View, совмещая его с progressBar'ом.
Собственно почему я так поступил - при наследовании от QAbstractListModel и иже с ним и установкой количества строк в 50-70000 начинались лаги. Насколько помню там View запрашивает их все при установке модели.
Потому я совместил написал свой View совмещенный с моделью.
progressBar - Вы scroll имеете в виду? А за размер таблицы взять какое-нибудь небольшое число? Боюсь, что опыта не хватит мне не совсем представляю, как там будут работать клавиши вниз, вверх, PgDn, PgUp, ctrl+home, ctrl+end и подобные... Не представляю, как сделать так, чтобы вьюха не спотыкалась при скроллинге клавиатурой.
|
|
|
2048
|
Qt / Общие вопросы / Re: Как реализовать большое число строк в QAbstractTableModel
|
: Июнь 24, 2014, 12:35
|
Сделать его "скользящим" по файлу придётся вам. Отобразить и быстро работать с большим объёмом данных не получится. А вот читать по частям файл и выводить на экран в зависимости от желания пользователя вы можете уже сейчас.
QFile::seek вам в помощь.
Да, я думал насчёт реализации в методе data() QFile::seek, QFile::read. Но каким образом в метод дата передастся переменная row = 5 000 000 000? Внедрять какой-нибудь комбо, который будет делить файл на несколько частей и предлагать пользователю выбор типа "работать начиная с 00000000 байта", "работать работать начиная с 80000000 байта" и т.д. не хотелось бы.
|
|
|
2049
|
Qt / Общие вопросы / Re: Как реализовать большое число строк в QAbstractTableModel
|
: Июнь 24, 2014, 11:38
|
Возможно, я не правильно выразился или не правильно понимаю назначение класса... На сколько я понимаю, при создании модели таблицы нужно минимум переопределить функции rowCount(), columnCount(), и data(). Меня интересует не одновременное отображение большого количества значений на экране, а отображение ячеек, с индексом строки выше пределов int.
Грубо говоря, как реализовать hex-редактор с поддержкой больших файлов?
|
|
|
2052
|
Qt / Многопоточное программирование, процессы / У меня не получается отправить в поток мой класс
|
: Июнь 16, 2014, 16:38
|
Здравствуйте! Прочитал статью, как правильно использовать QThread, но, видимо, что-то упустил. У меня существует класс MainWidget, который отвечает за прорисовку интерфейса и класс Solver, отвечающий за функционал программы. В конструкторе первого пишу: thread = new QThread(this);
connect(thread, SIGNAL(started()), solver, SLOT(run())); connect(solver, SIGNAL(finished()), thread, SLOT(terminate())); solver->moveToThread(thread);
При нажатии на кнопку вызывается слот: void MainWidget::convert() { saveSettings();
thread->start(); // QtConcurrent::run(solver, &Solver::run); }
При такой реализации интерфейс застывает и ждёт, когда solver закончит свою работу. При реализации QtConcurrent::run(solver, &Solver::run); всё работает прекрасно. Что я не так делаю? Прошу помощи.
|
|
|
2054
|
Qt / Общие вопросы / Re: QByteArray rawData to double[]
|
: Июнь 02, 2014, 14:24
|
QDataStream можно использовать и прямо с QFile
Задача стоит такая: Открыть файл и представлять его как массив double, как массив int, как char и т.д. Не очень подходит такой вариант
|
|
|
|
|