Здравствуйте, гость ( Вход | Регистрация )
Дата поста: | В теме: | За сообщение: | Спасибо сказали: | ||
---|---|---|---|---|---|
27.11.2015, 12:48 | Совместимость скомпилированой библиотеки с другой версией Qt | Описание для Qt4, для Qt5 по идее ничего не должно изменится (подробнее ищи в её документации |
MishaUA, | ||
13.11.2015, 10:27 | QTableWidgetItem и QTreeWidgetItem | Скажите, это корректное удаление элемента ? нет, в справке:
Разные вопросы следует задавать в разных темах, для тех кто ищет ответы поиском, для них так много удобнее, чем разгребать кашу внутри одной темы |
Ponchikus, | ||
28.10.2015, 20:15 | Чтение .txt файла, сохраненного в кодировке UTF-8 | а куда выводишь? в винде в командную строку? Тогда конвертируй QString к "IBM-866"
|
aqt, | ||
27.10.2015, 12:25 | Перевести QVariant обратно в мой указатель на объект | Я его засовываю в QVariant таким образом: а зачем ты к QObject * приводишь? Так ты из QVariant-а только указатель на QObject и сможешь вынуть.QVariant::fromValue<QObject *>(pStatus); См. доку по T QVariant::value () const и void QVariant::setValue ( const T & value ) Этого достаточно |
kruger, | ||
25.10.2015, 8:02 | Lime Report - Qt генератор отчетов | Два замечания: 1) чтобы демка собралась с Qt4 нужно поправить код [attachment=1939:patch0.zip] 2) С дизайнером не разобрался, какое-то месиво из полей наложенных друг на друга, не понятно как это создано, как будет выглядеть и как редактировать. |
TEHb, | ||
19.1.2015, 20:41 | Программа для "Умного дома" | Напрашивается сделать класс описывающий и устройство и виджет для его управления. Добавление устройства - создание экземпляра класса (объекта), отображение странички с его настройками вызовом функции класса widget(), которая создаст виджет со всем его содержимым и вернёт указатель. Ну а данные хранить в виде полей этого класса (вместо отдельной структуры. Если класс обозвать Device, то список устройств: QList<Device*> Наследник QObject, авдруг тебе в будущем сигналы и слоты понадобятся, чтобы тотально проект не пересобирать, лучше уж сразу. |
casper17, | ||
9.12.2014, 20:07 | Странная работа QSettings с QTextCodec и BOM | Меня реализация QSettings бесит давно и основательно. Всё что нужно было сделать это конструктор: QSettings ( const QIODevice & iodevice, QObject * parent = 0 ) вместо QSettings ( const QString & fileName, Format format, QObject * parent = 0 ) тогда мы могли бы читать файл в QBuffer предварительно преобразовав кодировку (но внутрянка получается сложнее, поэтому делать так троли не стали). Выход из положения - зарегистрировать свой формат, через registerFormat() по сути создаёшь две функции, чтения и записи из/в файла и регистрируешь их связывая с условным форматом. В функция чтения/записи реализуешь механизм перекодирования. В общем-то не сложно и можно эту кухню вынести в отдельную пару .cpp/.h |
kin63camapa, | ||
19.9.2014, 11:07 | QRadioButton autoExclusive | [attachment=1873:screen_radiobutton.png] [attachment=1874:radiobutton.ui.zip] (отрежь фиктивное расширение) П.С. делал в Qt 4.7.4 |
lanz, | ||
3.9.2014, 11:39 | перетаскивание группы виджетов | Первой идеей было использовать QDockWidget, но при перетаскивании они не меняются местами, а добавляются рядом, образуя вкладки. меняются, поведение зависит от настроек.Запустите "Example and Demos" выберите пункт "Demonstrations" -> "Mainwindow" потаскайте DockWidget-ы [attachment=1869:screen.png] |
borune, | ||
11.8.2014, 17:10 | Получения сигнала во время выполнения цикла. | Вставь в цикл: QCoreApplication::processEvents() |
Trisch, | ||
8.8.2014, 7:09 | Dragscroll QScrollArea внутри QGraphicsView | Amadey, используй тэг code при оформлении сообщений содержащих фрагменты исходных кодов |
Amadey, | ||
8.4.2014, 18:33 | в чем сделать исталятор драйвера? | У Экселсиора простой установщик есть, попробуй им |
mezmay, | ||
8.4.2014, 18:27 | Классы в динамических библиотеках. | Тут правильнее речь вести об объекте (экземпляре класса). В каком потоке ты его создаёшь, в том он и будет жить. |
MishaUA, | ||
5.4.2014, 18:22 | Классы в динамических библиотеках. | class MyLib : public QObject MishaUA, не вижу у тебя инициализации структуры w А вообще сделай функцию, которая будет создавать экземпляр (объект), а дальше работай с ним как обычно.
|
MishaUA, | ||
12.3.2014, 4:37 | QMdiArea. Не понятное поведение | MishaUA, | |||
19.2.2014, 20:21 | Создание рабочего экзешника | По мотивам документации, написана статья в нашей Вики: Развертывание приложений Qt в MS Windows |
borune, | ||
8.2.2014, 13:36 | Работа с подготовленными запросами (QSqlQuery::prepare) (Firebird 2.1), оптимизация запросов, кэширование, транзакции | q.exec(squery); Если ты хочешь проверить успешность запроса, то смотри что возвращает exec(), а не активность/неактивность. Часто isActive() будет возвращать Ложьif (!q.isActive()) А если я выполняю несколько запросов, используя один QSqlQuery q, то мне каждый раз надо вызывать setForwardOnly? НетА если у меня в таблице, например, 15000 записей. Надо их почти все удалить. Значит надо делать так? И транзакция здесь тоже нужна? Транзакции лучше применять всегда явно.Но драйвер Qt для Firebird убогий, в нём нельзя задавать тип транзакции. |
Steklova Olga, | ||
8.2.2014, 13:05 | Работа с подготовленными запросами (QSqlQuery::prepare) (Firebird 2.1), оптимизация запросов, кэширование, транзакции | То есть так? на мой вгляд это:Цитата if (!q.prepare(squery)) лишнее условиеА почему это приводит к увеличению скорости? потому что, когда ты не начинаешь транзакцию явно, то транзакция создаётся не явно, т.е. будет пачка транзакций вместо одной, на каждый "бинд". Это даже на SQLite очень хорошо заметно (для ~50 вставок скорость увеличивается в 2-3 раза)Это стоит сделать независимо из количества выполнений запроса (qntRec)?И при qntRec = 10, и при qntRec = 20000? Я обычно оборачиваю в транзакцию, если циклов потенциально может быть больше 5.“При помещении в базу данных большого количества данных в пакете предпочтительным является разбиение их на группы и подтверждение работы приблизительно через каждые 5000-10000 строк.” У Firebird-а есть точки сохранения (savepoints) и здесь они имеются ввиду. Просто для надёжности, а вдруг связь с сервером прервётся. Но их не поддерживает оригинальный драйвер Qt. На прог.орге человек выкладывал свой драйвер Firebird-а, вроде он их поддерживает.объявить запрос (и использовать это объявление для нескольких запросов), Это всёго лишь экземпляр класса QSqlQuery, но не запрос с точки зрения СУБД.Нужно лишь такое: Для FB откатыватся при ошибках сильно рекомендую, иначе мертвые транзакции так и останутся в БД, т.к. FB хранит версии своих состояний.Недостаточно просто объявить запрос, подготовить его, проверить результат prepare, забиндить значения параметров запроса и выполнить его? Притом обрамив все это в транзакцию. достаточно |
Steklova Olga, | ||
5.2.2014, 16:32 | QTranslator не переводит | я не сталкивался с ситуацией, когда строки помечаются как строки для перевода, до установки переводчика. Возможно причина в этом, чтобы проверить попробуй переместить строку
после
И, кстати, У тебя масло масленное получилось, используй либо макрос, либо QObject::tr() |
aerosun, | ||
4.2.2014, 19:50 | Работа с подготовленными запросами (QSqlQuery::prepare) (Firebird 2.1), оптимизация запросов, кэширование, транзакции | Где бы про это почитать? у Хелен Бори естьА я и не думала, что надо учитывать такие вещи, мне только хотелось оптимизировать работу, чтобы не загружать БД разборкой одинаковых запросов. вот собственно и не думай, оптимизирует сама СУБД, обрати внимание на примеры Qt - QSqlQuery всегда локальная переменная.Применительно к Firebird. Из Qt в Qt-драйвер БД отправляется срока prepare и пачка (массив) аргументов, этот драйвер прям как есть всё отправляет в Firebird, т.е. строка prepare и массив аргументов. Firebird по строке prepare строит план запроса и сохраняет его, затем используя массив аргументов сам "биндит" их в план. В большинстве случаев можно полагать, что сделав с двух разных машин и программ один и тот же prepare Firebird постарается воспользоватся уже подготовленным (с предыдущего события) планом запроса. Firebird кэширует план запроса, в прочем MySQL тоже должен так делать. Собственно времени больше всего уходит именно на построение плана запроса. Лучше будет для оптимизации вообще все эти запросы делать с prepare? Или есть случаи, когда лучше их выполнить сразу, без подготовки, как q.exec(sQuery) ? prepare полезно делать в ситуации, когда ты собираешься несколько наборов данных одинаковым запросом отправлять.П.С. Обрамить всю пачку prepare-bind в транзакцию - существенно увеличить скорость выполнения этой пачки (для любой БД), а для Firebird-а ещё и меньше мусорить, т.к. он версии состояний хранит. П.П.С. Т.к. Firebird версионник, он работает сильно не так как MySql. Недействительным план запроса может стать в других ситуациях. В процессе работы кэш запросов хранит текст запроса SELECT вместе с соответствующим результатом, который посылался клиенту. Вот в Firebird я не помню чтоб результат запроса сколь-нибудь долго кэшировался, для заданной версии, может быть, но версий множество по-этому в общем котле вряд ли. А вот план кэшируется всегда для любого типа запроса |
Steklova Olga, | ||
4.2.2014, 13:46 | Побитовое чтение переменных и циклический сдвиг. | имя_переменной.номер_бита это обращение к члену битового поля (Си)Глянь QBitArray Есть ли в Qt побитовый циклический сдвиг. В Qt это не нужно, т.к. есть оператор сдвига в СИ>> и << Выдвигаемый бит запоминаешь, потом его "в зад" добавляешь, компилятор это дело просекает и использует соответствующие ассемблерные инструкции. |
gvenihvivar, | ||
3.2.2014, 21:19 | Работа с подготовленными запросами (QSqlQuery::prepare) (Firebird 2.1), оптимизация запросов, кэширование, транзакции | Да это не страшно, FireBird кэширует подготовленные запросы. (они именно в таком виде и улетают в БД из твоей программы) у меня перестала работать подготовка запроса. prepare стал выдавать ошибку Driver not loaded. Не понимаю, в чем дело. по всей видимости это произошло потому, что QSqlQuery будучи членом класса создаётся тогда же когда создаётся экземпляр класса DBFunctions, а он в свою очередь создаётся до соединения с БД. Соответственно этот QSqlQuery пытается работать с недействительным соединением.В обще его лучше оставить в покое (т.е пусть он будет локальным в функции), заодно и имя ему дать короткое - q. |
Steklova Olga, | ||
3.2.2014, 14:22 | QListWidget: как отследить mouse leave от дочернего элемента? | aerosun, | |||
19.1.2014, 7:18 | operator QString() const | Нашёл! Форма:
Означает оператор приведения типа: Для определенных пользователем преобразований возвращаемый тип задается неявно и совпадает с именем оператора.Т.е. для
а для
|
crot26rus, | ||
14.1.2014, 12:25 | Обработать событие выключение компьютера | В Qt есть поддержка POSIX-сигналов, но для Виндовоза видимо придётся писать своё с использованием WinAPI. |
mezmay, | ||
Текстовая версия | Сейчас: 24.11.2024, 8:16 |