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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 ... 713 714 [715] 716 717 ... 761
10711  Qt / Пользовательский интерфейс (GUI) / Re: Анимированные layout (4.6) : Январь 06, 2010, 16:26
По-моему это хороший feature request для Qt
10712  Qt / Общие вопросы / Re: Побитовое чтение файла : Январь 06, 2010, 16:24
Я в общем-то не программер по профессии, но то, что операторы << и >>  бывают для работы с битами, и бывают независимо для работы с I/O, я знаю давно Улыбающийся И что байт - минимальная единица инфы - тоже. Просто сам смысл класса QBitArray состоит в том, что про это можно забыть Улыбающийся
Ну если Вы уже так много знаете - так это еще лучше  Улыбающийся  Если (как я понял) Вы хотите представить число/значение более короткой комбинацией бит - то от QBitArray Вам не помощи никакой потому что он умеет работать только с 1 битом (как boolean).
10713  Qt / Общие вопросы / Re: Как средствами Qt узнать инфу о свободной памяти? : Январь 06, 2010, 16:10
К сожалению тут ты можешь быть ответственен только за собственные вызовы new, а вот чего может навыделять Qt или ОС. Тут уже от падения может и не спасти.
Ах как хочется выдать "Учи матчасть !"  Улыбающийся Но не буду - непродуктивно. Операции new/delete могут быть перекрыты, если не ошибаюсь, с 1993 года. Легко проверить например так

Код:
void * operator new( unsigned long size )
{
  return malloc(size);
}

int main( int argc, char * argv[] )
{
  ...
}
Поставьте breakpoint на malloc и Вы увидите в отладчике что управление приходит "из недр Qt"
10714  Qt / Общие вопросы / Re: Как средствами Qt узнать инфу о свободной памяти? : Январь 06, 2010, 15:26
Перед работой с массивом нужно определить размер свободной оперативки.
Не вдаваясь в детали: на сегодняшний день такая задача/подход лишен смысла даже в 32-bits (не говоря уже о 64). Я делаю так:

- отслеживаю сам сколько памяти распределено мною (свой менеджер кучи)
- в преференсах позволяю пользователю задать количество используемой памяти. По умолчанию - 80% физической памяти
- если предел превышен - swap на диск, если нет такой возможности - fatal error и выход

Все это обходится весьма недешево. Поэтому если нет абсолютной необходимости - разумно ограничиться простой проверкой не вернет ли new NULL (обычно с испусканием exception). Сделать "быстренько" (используя готовый инструмент) здесь не получится.
10715  Qt / Общие вопросы / Re: Создать н-ое количество групп компонентов на форме : Январь 04, 2010, 13:25
Надо создать Х groupBox-ов с графиками и надписями. Практически они будут одинаковыми кроме информации которую они будут содержать.
Как правильно делать:
функцию или структуру?

Если я правильно понимаю, то для таких вещей надо использовать структуры. Вот только хотелось бы узнать прав ли я.
Прав, структуру/класс. Управлять из ф-ции намного труднее, будет плодиться много if'ов и.т.п
10716  Qt / Общие вопросы / Re: Побитовое чтение файла : Январь 02, 2010, 22:07
Блин, в теме уже почти десяток ответов, а прояснилось - ноль  Грустный
Да бывает у девушки муж помирает - а у вдовы живет  Улыбающийся

Я принципиально не понимаю, о каком цикле речь. Если я хочу читать побитно, это не значит, что я буду читать биты в цикле, т.к. файл в любом случвае читается байтами.
Здравый смысл и описание форматов для QDataStream подсказывает, что операция >> применяется к QBitArray единожды. При этом сначала считывается размер объекта QBitArray, а затем он сам, в соответствии с этим размером.
Но либо мой здравый смысл не такой уж здравый, либо одно из двух...
Минимальная единица информации - байт, меньше нет. Др. дело что внутри байта Вы можете крутить битами как хотите, паковать и.т.п. Отталкивайтесь от этого, должно полегчать. Операции << и >> никакого отношения к битам не имеют, это просто перекрытые операторы I/O
10717  Qt / Общие вопросы / Re: Многоуровневая структуризация : Январь 02, 2010, 21:59
еще, произвольный доступ по индексу для QList, std::list, имеет линейную сложность. в то время как у вектора она константна.
QList имеет очень мало общего std::list  Улыбающийся QList это просто массив указателей, поэтому доступ к элементу столь же быстр как и для QVector + одно разыменование. А в общем Qt молодцы - хороший контейнер сделали QList, там бы еще небольшие буги-вуги почистить - будем надеяться в 4.7
10718  Qt / Общие вопросы / Re: Кто работал с QBitArray? - поделитесь соображениями : Январь 02, 2010, 21:01
Нет, в последнем вопросе я имел ввиду работу с байтами, без паковки. Тут просто предложили вариант Memory Mapped File, я с ним не знаком, но по названию догадываюсь, что это отображение файла в память, при этом наверняка изменения данных в памяти потом запишутся в файл. Я и поинтересовался - если мне не нужно сохранять эти изменения в файл, то какое преимущество дает Memory Mapping перед простой загрузкой данных в любой контейнер?
Memory Mapped File - это своя песня и к битовой паковке прямого отношения не имеет. А вот когда надо наладить обмен данными между 2-мя процессами - без Memory Mapped не обойтись.

А насчет паковки я решил сделать оба варианта Улыбающийся Будет проверяться кол-во свободной памяти. Если хватает - загрузим байтами, если маловато - то битами. Компромис разрешен Улыбающийся
Программист должен быть ленивым и никогда не делать 2 варианта  Улыбающийся
10719  Qt / Общие вопросы / Re: Многоуровневая структуризация : Январь 02, 2010, 20:53
Igors, уточните, пожалуйста, где написано то, что QVector лучше испольовать для простейших структур, а QList - для "выше травы"?
Я это нигде не читал, просто наблюдаю как контейнеры работают. Например операции вставки/удаления. В контейнере 10 элементов. Вставляем на 5-е место. QVector вызовет 5 конструкторов копирования (для всего хвоста) так же как и std::vector. A QList спокойно переставит указатели на объекты - и готово. Пусть QList чуть больше тратит на элемент (+ sizeof(void *)) - это компенсируется удобством работы. В доке правильно написано что надо использовать QList  если ничего особенного не имеется ввиду  Улыбающийся
10720  Qt / Общие вопросы / Re: Многоуровневая структуризация : Январь 02, 2010, 19:58
по ходу написания своего проекта столкнулся с потребностью сохранять данные в структурированном виде. Количество элементов не известно заранее, и мало того, должно изменяться. Потому использовать буду какой-нибудь QVector<T> - подобный класс.
"Массив иассивов" никак не связан с множественным наследованием. QVector лучше использовать для простейших структур. Если же планируете держать в массиве что-то "выше травы" (хотя бы имеющее конструктор/деструктор) лучше использовать QList (пусть он потребляет чуть больше памяти)
10721  Qt / Общие вопросы / Re: Кто работал с QBitArray? - поделитесь соображениями : Январь 02, 2010, 19:51
Я правильно понимаю, что если мне не нужно изменять содержимое файла, то memory mapping не даст преимущества перед простой загрузкой данных целиком из файла, например, в QList?
Ну это уж Вы сами смотрите по обстановке. "Паковка" дает хорошую экономию по памяти и незначительное увеличение вычислений. Другое дело с ней заботы - стандартный контейнер не попользовать, адрес от этого "3-битового чудика" не получить, надо работать по индексу и.т.п. Все это не смертельно и пережить можно, но, как правило, имеет смысл только если "есть что паковать".
10722  Qt / Пользовательский интерфейс (GUI) / Re: signal slot, widget->show() : Декабрь 29, 2009, 22:14
Цитировать
...(const QString & message) <= reference to QString, not QString
А это принципиально?
Просто я собирался использовать QueuedConnection. Насколько я понял из руководства, слот будет обрабатываться последним в очереди, а в это время reference может быть уже не действительным.
Можно повторить то же через postEvent (прикрепив данные к event), но думается с тем же результатом. Если у Вас есть show - значит есть и hide и надо смотреть его, возможно не сбивается show/hide
10723  Qt / Общие вопросы / Re: QProcess, убить сторонний процесс зная его краткое имя : Декабрь 29, 2009, 21:11
В Линуксе так делать можно - закрывать сессию программы, при этом программа не имеет права возразить и что-то спросить у пользователя. Все сохранения текущих данных - на усмотрение программы. В Qt почитать про это можно в статье "Session Management". Вот только как отправить такое событие другой программе - не подскажу.
На Mac платформе: KillProcess() (с большой буквы, нативная ф-ция)- "цивилизованный" путь, процессу посылается событие quit. Если не понимает - через SIGKILL сигнал. Так делает Qt (terminateProcess/killProcess).

Хотя не пойму откуда такое желание мочить всех направо и налево?  Улыбающийся
10724  Qt / Общие вопросы / Re: Кто работал с QBitArray? - поделитесь соображениями : Декабрь 29, 2009, 16:06
До кучи: 5 бит на значение встречается не так уж редко (напр. некоторые форматы QuickTime). Реализация скромная, на базе unsigned short (используются 15 бит из 16)
10725  Qt / Пользовательский интерфейс (GUI) / Re: signal slot, widget->show() : Декабрь 29, 2009, 15:57
Сигнал эмитится из разных методов внутри paintEvent(), но иногда происходит следующее, PlainTextEdit промелькивает, т.е. появляется и исчезает.
В какую сторону смотреть? Кто-нибудь сталкивался с подобным?
Не сталкивался, но по смыслу сигналы из paintEvent (если уж без них никак нельзя обойтись) должны помещаться в очередь (т.е. connect должен создаваться с QueuedConnection)
Страниц: 1 ... 713 714 [715] 716 717 ... 761

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