Просмотр сообщений
|
Страниц: 1 ... 92 93 [94] 95 96
|
1396
|
Qt / Общие вопросы / Re: QThread, как с ним работать, где почитать подробно?
|
: Март 30, 2010, 08:50
|
вставьте тестовую печать thread() для объектов сигнал/слот немного не понял, что здесь имеется в виду, что за "тестовая печать thread()" если главная нить создала ранее в куче объект (не наследует QObject, вообще ничего не наследует, сам по себе), и есть глобальный указатель на его тело, можно из QThread обращаться напрямую к методам этого объекта, при условии, что ни он сам, ни его вызовы не вызывают другие функции из объектов главной нити, и не работают с интерфейсом, но вызывают некие нейтральные функции, написанные на С?
|
|
|
1397
|
Qt / Общие вопросы / Re: QThread, как с ним работать, где почитать подробно?
|
: Март 29, 2010, 15:32
|
там написано, что по умолчанию Qt::QueuedConnection, но если его явно указать, то не работает, если попытаться QBlockingQueuedConnection, эффект точно такой же
а если через очередь, то почему не все строки успевают вставляться в QTextEdit?
|
|
|
1398
|
Qt / Общие вопросы / Re: QThread, как с ним работать, где почитать подробно?
|
: Март 29, 2010, 15:18
|
не, не разрешилась причем если явно указывать Qt::QueuedConnection, то не работает вообще, выводится одна строка правильно, за ней некорректная, и все заканчивается а по умолчанию похоже связывает через Qt::DirectConnection, потом не падает, но не успевает выводить целиком все строки (QTextEdit) и хоть бы где было написано, что run() еще раз вызывается в start()...
|
|
|
1399
|
Qt / Общие вопросы / Re: QThread, как с ним работать, где почитать подробно?
|
: Март 29, 2010, 14:04
|
стоит проверить, не лезете ли Вы в окно из нитки расчета ну так оно и есть... несколько удручен, что в такой мощной штуке, как Qt, интерфейсные объекты могут работать только в главной нити раньше этого не замечал, поскольку казалось, что такого быть просто не может причем это буквально удар под дых... хотя данная проблема разрешилась связью объекта-интерпретатора и окна сообщений через сигнал-слот, удручает, что нельзя простым способом в интерпретаторе создавать интерфейсные объекты очень удручает...
|
|
|
1400
|
Qt / Общие вопросы / Re: QThread, как с ним работать, где почитать подробно?
|
: Март 29, 2010, 13:09
|
мне не надо из файла читать, у меня есть окно, в которое производится вывод сообщений, как в консоль, интерпретатор выводит туда сообщения, несколько появляются, потом падение по ошибке обращения по несуществующему адресу или в интерпретаторе, или где-то в коде Qt, который выводит текст в окно, во всех случаях проблемы с динамически захваченными объектами, испорчены указатели ну раз читал, то и используй их где?? самому переписать распределение памяти с защитой на семафорах??? в интерпретаторе есть куски старого кода на С, который использует malloc/calloc - с MFC все работало на ура, запускали интерпретатор в отдельном треде, программы выполнялись, при этом интерфейс задачи был живой, работал, интерпретатор хватал себе куски памяти, интерфейс программы и она сама тоже хватали себе куски памяти, никаких конфликтов не было а сейчас ощущение такое, будто конфликт возникает при распределении памяти, рушится куча, иначе пока трудно объяснить, почему при выводе сообщений все рассыпается есть правда еще одна мысль... надо ее проверить... Сейчас во всех книгах Вы найдете примерно одинаковые фразы ну я об этом и спрашиваю, может где-то уже есть более подробно описанная работа с QThread и сигнал-слотами, может на веб-страницах, блогах, уже хорошо известное... гуглом буду долго искать, а надо дело делать /*забыл написать, что вопрос тем, кто знает ответ, а не умеет предлагать пользоваться поисковиками - как правило, их советуют те, кто сам только недавно научился ими пользоваться*/
|
|
|
1401
|
Qt / Общие вопросы / Re: QThread, как с ним работать, где почитать подробно?
|
: Март 29, 2010, 12:44
|
по документации не видно почти ничего, нет никаких тонкостей...
книга эта есть в печатном виде, и там тоже нет ответа на мой вопрос - почему может портиться куча (пока единственный разумный ответ - куча в библиотеках MinGW не имеет встроенной защиты на случай многопоточности, в отличие от MFC, хотя это выглядит более чем странно), как надо бы строить приложение и взаимодействие объектов, наследующих QThread, как правильнее использовать сигналы-слоты в этом случае (например, мне надо из одного треда в другой передавать строки, как правильно реализовать очередь строк, если тредов интерпретатора будет запущено несколько?)
а про мутексы и семафоры я читал, пародон, в начале 90-х, тут у Шлее нет ничего для меня нового
|
|
|
1402
|
Qt / Общие вопросы / QThread, как с ним работать, где почитать подробно?
|
: Март 29, 2010, 11:32
|
некий транслятор создает некий код для некоего интерпретатора (не QScript) и потом надо запустить интерпретатор, чтобы этот код выполнялся в независимой нити, а управление могло вернуться в объект, связанный с пользовательским интерфейсом, то есть, чтобы пользователь мог видеть результаты выполнения кода, что-то еще делать, не связанное с изменением этого кода
как это правильно сделать? где можно подробнее прочитать о работе QThread, с несколькими примерами, использование start()/exit() и т.д.
попытка выполнить в run() просто сначала start(), потом запустить интерпретатор, приводит к падению интерпретатора, некоторые данные в коде оказываются разрушены, хотя во время его выполнения ничего больше не делается, но падает не сразу, интерпретатор выполняет несколько первых инструкций, в том числе, достаточно сложных, работающих со стеком, и с объектами в куче, но потом похоже портится куча, поскольку интерпретатор получает, вместо указателя на объект в куче, указатель 0xfeeefeee
при запуске в приложении в одной нити этот же интерпретатор работает на ура, выполняется все замечательно, проблем нет вообще никаких
в общем, где хорошо описан QThread и есть примеры решения похожих задач?
|
|
|
1404
|
Qt / Qt-инструментарий / зависимость от библиотеки не работает
|
: Март 17, 2010, 10:50
|
извиняюсь, если решается просто, или уже обсуждалось, просто банально нет времени сидеть и разбираться, надо делать проект...
в QtCreator 1.2.1 загружаю два проекта, один создает библиотеку, другой эту библиотеку включает, регулярно включаю флажок зависимости второго от первого (причем этот флажок почему-то не сохраняется при выходе из QtCreator), разумеется, у второго в .pro файле прописано включение библиотеки в бинарник
однако, почему-то если библиотека изменилась, второй проект не пересобирается, бинарник остается старый, причем такое как было в первых версиях QtCreator, так и осталось до сих пор, получается единственное на что влияет флажок зависимости - это на необходимость пересборки только библиотеки
как быстро и корректно сделать, чтобы если библиотека поменялась, пересобирался и бинарник? пока просто удаляю его при каждой сборке проекта, но это не кошерно, поскольку он удаляется при каждом запуске отладки, даже если сборки не было
|
|
|
1407
|
Qt / Пользовательский интерфейс (GUI) / Re: как избавиться от буферизации при добавлении в QTextEdit?
|
: Февраль 18, 2010, 11:45
|
а, ну да, там написано "Each character within a paragraph has its own attributes, for example, font and color." хотя не хляет с первого раза - переделал на QPlainTextEdit, визуально скорости не добавилось (может незначительно), и появились ненужности - выводимую строку считает "параграфом", добавляет вывод \n после нее, даже если строка символа \n не содержит, хотя надо настройками поиграть и тоже "буферизует"... если вывести 10000 раз строку, задержка секунд 12, и потом все сразу появляется а не может это какой-нибудь другой связанный с текстом объект вытворять? тут и QWidget, и QFrame... все равно не ясно, как заставить текст появляться после вывода каждой строки
|
|
|
1409
|
Qt / Пользовательский интерфейс (GUI) / как избавиться от буферизации при добавлении в QTextEdit?
|
: Февраль 18, 2010, 10:27
|
есть объект этого класса, используется как "консоль" с возможностью скопировать из нее, выводить цветной текст и т.д. но при последовательном добавлении строк в него они "буферизуются", то есть, не показываются сразу после добавления, а появляются все вместе, когда вывод завершается и управление переходит на ожидание действий пользователя как лучше всего "протолкнуть" выводимый текст, чтобы он появлялся в окне сразу после добавления в QTextEdit? каждый раз отдавать управление на цикл ожидания - не хочется, может другие способы есть? текст в объект этого класса выводится довольно медленно, при добавлении всего пары сотен строк есть очень ощутимая задержка, на две-три секунды, поэтому еще больше тормозить никак не надо текст добавляется в объект таким образом: listOutput->moveCursor( QTextCursor::End ); listOutput->insertPlainText( aString );
|
|
|
1410
|
Qt / Установка, сборка, отладка, тестирование / Re: почему статическая сборка лезет в DLL (было не запускается приложение)?
|
: Февраль 18, 2010, 09:07
|
Куда подставляются? в командную строку вызова компоновщика но это уже не существенно, существенно, что после нормальной статической сборки бинарник размером 9 мегов не запускается без библиотек mingwm10.dll и QtCored4.dll (хотя последняя явно подшивается в виде QtCored4.a), причем запуск производится не из gdb, а из командной строки ну mindwm10.dll ладно, с ним могут быть нюансы, но почему требуется QtCored4.dll?? единственное разумное объяснение - в QtCored4.a отсутствует что-то, что есть в QtCored4.dll, но блин же обе библиотеки искаропки может оно будет нормально, если без отладчика версию собрать...
|
|
|
|
|