Russian Qt Forum
Май 21, 2024, 12:57 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 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 и есть примеры решения похожих задач?
1403  Qt / Qt-инструментарий / Re: зависимость от библиотеки не работает : Март 17, 2010, 12:42
дык заменил бы, да некогда коней менять, скакать надо...

PRE_TARGETDEPS вроде помогло, спс
1404  Qt / Qt-инструментарий / зависимость от библиотеки не работает : Март 17, 2010, 10:50
извиняюсь, если решается просто, или уже обсуждалось, просто банально нет времени сидеть и разбираться, надо делать проект...

в QtCreator 1.2.1 загружаю два проекта, один создает библиотеку, другой эту библиотеку включает, регулярно включаю флажок зависимости второго от первого (причем этот флажок почему-то не сохраняется при выходе из QtCreator), разумеется, у второго в .pro файле прописано включение библиотеки в бинарник

однако, почему-то если библиотека изменилась, второй проект не пересобирается, бинарник остается старый, причем такое как было в первых версиях QtCreator, так и осталось до сих пор, получается единственное на что влияет флажок зависимости - это на необходимость пересборки только библиотеки

как быстро и корректно сделать, чтобы если библиотека поменялась, пересобирался и бинарник? пока просто удаляю его при каждой сборке проекта, но это не кошерно, поскольку он удаляется при каждом запуске отладки, даже если сборки не было
1405  Qt / Пользовательский интерфейс (GUI) / Re: QGraphicsView при установке текущего элемента перемещает viewport : Февраль 25, 2010, 09:57
Решено. Viewport перемещал не QGraphicsView. Как выяснилось (этот код писал другой человек) - после разбора кнопок Left, Right, Up, Down производился вызов стандартного обработчика событий класса QObject, и для этих кнопок вызывался тоже. Он и перемещал.
1406  Qt / Пользовательский интерфейс (GUI) / Re: как избавиться от буферизации при добавлении в QTextEdit? : Февраль 18, 2010, 12:21
хм... помогло  Смеющийся

а в параграф строку превращает вызов appendPlainText()

если ставить курсор в конец, и потом insertPlainText() то нормально получается
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... все равно не ясно, как заставить текст появляться после вывода каждой строки

1408  Qt / Пользовательский интерфейс (GUI) / Re: как избавиться от буферизации при добавлении в QTextEdit? : Февраль 18, 2010, 11:01
возможно надо его использовать, просто подключили по-началу то, что первое на взгляд подходит

ну и вроде как QTextEdit позволяет внутри параграфа менять шрифт и, что важнее, цвет текста, а QPlainTextEdit только устанавливать на параграф целиком
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, но блин же обе библиотеки искаропки

может оно будет нормально, если без отладчика версию собрать...
Страниц: 1 ... 92 93 [94] 95 96

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