Просмотр сообщений
|
Страниц: 1 2 [3] 4
|
31
|
Qt / Вопросы новичков / Как правильно реализовать просмотр данных в таблице. QtableWidget или QtableView
|
: Октябрь 10, 2014, 23:54
|
Здравствуйте, Уважаемые.
Прошу помощи определится с технологией программирования.
Задача такого плана:.
Нужно отобразить набор данных в таблице. Столбцов в таблице немного всего 5, а вот строк может быть от 100 до 100 тысяч и больше. Данные в ячейках таблице, массивы символов (разделены пробелами) которые тоже могут быть разной длины, но не больше 200. Отображаться будут преимущественно в HEX формате.
Нужно реализовать следующую функциональность:
1. щелкнув мышкой на любом значении в ячейке таблицы он должен подсветится и соответственно должны подсветится все такие же значения, во всех ячейках таблицы ( типа подсветки в редакторе Qt Сreator) 2. Тоже самое только выделив несколько значений в строке. Так же возможность скопировать в буфер обмена.
Подсвечиваться должна не вся ячейка, а только символ в ней. Редактировать ячейки не нужно.
Сам вижу следующий путь решения задачи.
Создать QtableWidget. Переопределить QTableWidgetItem в нем создать фильтр событий и отслеживать курсор и нажатия мыши. С внешним миром общаться при помощи сигналов.
Не понятно, как определить на какой символ в строке было произведено нажатие. Ведь в ячейке не набор объектов, а единая строка. Так же не ясно можно ли отображать разными цветами символы в строке.
Еще можно создать делегата.
Так же можно построить таблицу с помощью QtableView.
Я, путаюсь в технологиях. C Qt знаком на начальном уровне, пишу в нем не часто.
Поэтому прошу помощи клуба.
Главный момент размер таблицы, нужно, что бы все нормально крутилось, на не очень навороченном ПК, при 100 тысячах строк в таблице.
|
|
|
32
|
Qt / Вопросы новичков / Собранное приложение корректно не работает в Win7
|
: Сентябрь 23, 2013, 17:27
|
Доброго всем здоровья.
Тут этак с год назад писал приложение на Qt сделал процентов 80. Потом пришлось отложить.
Сейчас снова к нему вернулся и вижу один сплошной глюк.
Когда отставил работу та чаcть была отлажена и все работало.
Но тогда у меня стоял WinXp соответсвенно собирал все под ним.
Сейчас поменял машину и поставил Win7.
Вопрос чего могло случиться, такое впечатление что глючит на уровне Qwt.
Я понимаю что нужно играться с библиотеками и компиляторами, но подскажите на что обратить внимание в первую очередь.
Неужели нет совместимости снизу вверх?
Еще вопрос есть где либо доступно написано как одним взмахом собрать приложение для WinXp и Linux. Такое вообще возможно?
|
|
|
36
|
Qt / Qt-инструментарий / Re: Как QTCreator подсунуть кросс компилятор от ARM.
|
: Октябрь 26, 2012, 22:16
|
Спасибо за ответы.
Скачал исходники QTCreator 2.6 Собрал вначале MinGW 4.7 все собралось при запуске потребаволо dll типа QtCore4.dll QtGui4.dll и прочие. Они были добавлены в папку QtCreator (из сборки MinGW) после чего в процессе запуска начало выскакивать ошибка запуска со всеми вытекющими. Короче не работатет и ошибка в модуле QtGui4.dll. Пробовал собирать как отладку так и релиз везде результат один.
Затем установил VS2008 и собрал при помощи него. Ошибка стала другая не находит файл Core.dll причем этот файл не из сборки SDK а он из проекта тоесть только что собран. Самое главное он есть в том пути, который в окне ошибки.
Установлено последнее QTSDK 1.2.1 библиотека QT 4.8.1
Сборке с MinGW может не нравится версия компилятора, наверное нужно пресобрать библиотеку одним компилятором. Вот с VS2008 не понятно что ему не нравится.
|
|
|
37
|
Qt / Qt-инструментарий / Как QTCreator подсунуть кросс компилятор от ARM.
|
: Октябрь 26, 2012, 10:06
|
Уважаемые, здравствуйте! У меня такая проблема хочу использовать QTCreator 2.4 как IDE (редактор) для встроенных приложений. Для ARM AVR и прочих МК. Причем проекты ни к чему не привязаны, имею ввиду линуксы и прочие прелести жизни. QTCreator мне понравился как редактор, но не могу его настроить для сборки проекта с другим компилятором кроме MinGW или VS. Делаю следующее в инструменты->настройки->инструменты добавляю настройки GCCE прописываю пути к компилятору заодно и GDB. И все вроде хорошо, но в закладке проекты (что слева) основные настройки, в выпадающем списке инструменты нет моего созданного инструмента. Там присутствуют только инструменты созданные изначально при установке крейтора. Пробовал по разному например если в инструменты->настройки->инструменты клонировать инструмент из области автоопределнные то этот клон в выпадающем списке инструмента проекта будет виден. Как только я в этом клоне поменяю путь к компилятору, на какой нибудь свой, то все этот клон из списка инструменты проекта пропадает. Возможно ли в принципе QTCreator подсунуть другой компилятор пока вопрос в этом. Статьи читал но там данная тема не освещена. http://www.uschema.com/qt-creator-as-ide-for-c-embedded-projects/http://doc.qt.digia.com/qtcreator-2.4/creator-tool-chains.htmlЕсли при установке Крейтора он автоматом находит уже установленный тот же MinGW, то как его заставить увидеть и другие компиляторы. Извиняюсь, но в этих вопросов я совсем плохо отретируюсь, всегда пользовался уже готовыми IDE типа Кеил или ИАР. После опыта работы с Крейтором понял насколько с ним удобно работать. В сети есть куча примеров по настройки Эклипса или VS, использования их как редактора для встроенных систем. Крейтор думаю ничуть не хуже этих редакторов, причем он развивается.
|
|
|
39
|
Qt / Вопросы новичков / Как получить координаты мыши, при обработке события от клавиатуры (график QWT)
|
: Ноябрь 26, 2011, 15:29
|
Здравствуйте. Есть график QWT который масштабирую. Основа взята из уроков http://www.prog.org.ru/topic_11884_0.htmlhttp://qtlinux.narod.ru/qwtchartzoom.htmОтдельное спасибо их авторам. Перехватываются события элементов управления в eventFilter(QObject *obj,QEvent *event)
который зарегистрирован в канве qwtp->canvas()->installEventFilter(this);
Шкала по Х мне нужна только положительная. При масштабировании я запоминаю, положение Х курсора мыши, для того чтобы при масштабировании графика, эта точка на графике, оставалась на месте, а двигался график по бокам. Все работает при прокрутке колесом мыши. Но мне нужно изменять масштаб клавишами '+', '-' Я перехватываю события от клавиатуры в eventFilter if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) { QKeyEvent *kEvent = static_cast<QKeyEvent *>(event); ...... }
Тоже все замечательно, но тут главная проблема я не могу получить координаторы мыши Если сделать так QMouseEvent *mEvent = static_cast<QMouseEvent *>(event);
То в mEvent получаю левые значения. Проблему решил следующим образом, постоянно отслеживаю положение мыши и сохраняю ее координаты. В принципе все работает, но хочется считать положение курсора мыши вместе с обработкой события от клавиатуры. Подскажите как это реализовать.
|
|
|
41
|
Qt / Вопросы новичков / Re: Вопросы по потокам и файлам
|
: Октябрь 07, 2011, 19:15
|
Выделяй столько, сколько действительно необходимо.
Дело в том что приложение которое я разрабатываю может насосать бес предела. Поэтому задумался над тем, что надо как то ограничивать это дело. Думаю сделать порог 300 - 500 мег. После чего все обламывается и выдаем сообщение пользователю.
|
|
|
42
|
Qt / Вопросы новичков / Re: Вопросы по потокам и файлам
|
: Октябрь 06, 2011, 16:41
|
Какой поток? Что используешь для записи данных? QDataStream?
Да его родимого и использую. Но, к сожалению, в русской терминологии укоренилось что поток - это thread, "многопоточность" multi-threading и.т.п. Поэтому не запутывайте общественность и употребляйте "поток" только в связи с (Q)thread, а не с файлом.
Спасибо за ответ. Да я и не запутываю, а спрашиваю. У меня попутно вопрос по Win. Есть ли рекомендации какой максимальный кусок в памяти можно безопасно выделить для приложения?
|
|
|
43
|
Qt / Вопросы новичков / Вопросы по потокам и файлам
|
: Октябрь 05, 2011, 20:41
|
Здравствуйте. Просветите пожалуйста.
Принимаю данные по USB которые при необходимости нужно сохранить в файл. Есть возможность сохраненные файлы открыть.
Пока реализовал следующим образом.
Прием данных. Открываю файл ему назначаю поток. Пишу в поток периодически делаю flush()
Реализовал и немного призадумался.
Нужно ли делать постоянно flush() сохранность данных не критична. Вопрос следующего плана какой объем можно писать в поток?
В зависимости от времени подключения USB устройства там может и 1 гиг насосаться. Савапятся ли потоки автоматом, или им нужно периодики делать flush()?
Я правильно понимаю из названия поток - это есть реальный поток типа QThread?
Можно ли просто открыть поток, а потом назначить ему файл? Если да то как?
|
|
|
44
|
Qt / Вопросы новичков / Re: Почему не работает оператор сравнения != в QByt
|
: Октябрь 04, 2011, 19:50
|
Значит из потока еще что-то приходит. Что возвращает buf.size ()?
Спасибо всем за ответы. buf.size(0) возвращает 35. Я не правильно читал из потока. Почему то мне подумалось что сравнение должно работать до завещающего нуля (по аналогии с функциями сравнения С), но в QByteArray это не так. Так что там все правильно работает. У меня немного другой вопрос каким методом (оператором) можно прочить из потока строку с завещающим "\0" а не "\n" Перепробовал все read и операторы >>, не хотят они до нуля читать. Пришлось свою функцию написать с чтением побайтно и проверкой на 0
|
|
|
45
|
Qt / Вопросы новичков / Re: Почему не работает оператор сравнения != в QByteArray
|
: Октябрь 03, 2011, 22:44
|
C++ (Qt) $ cat main.cpp #include <QByteArray> #include <QDebug> int main( int, char ** ) { QByteArray buf( "*.mvt" ); qDebug() << "buf == *.mvt ->" << (( buf == "*.mvt" )? "Yes" : "No"); qDebug() << "buf != *.mvt ->" << (( buf != "*.mvt" )? "Yes" : "No"); return 0; } $ ./test buf == *.mvt -> Yes buf != *.mvt -> No
Вот так все работает. Если объявить в заголовке класса QByteArray buf Потом где то в программе присвоить (в моем случе прочитать из потока) значение, то не хочет работать. При объявлении в заголовке, отладчиком четко видно, что buf создается с запасом где то 32 байта. Когда объявляем локально QByteArray buf то имеем четкое количество байт под строку. Может в этом дело, но ведь там же есть завершающий 0. Тогда можно предположить, что QByteArray не предназначен для работы со строкоми.
|
|
|
|
|