Уважаемая администрация, на кой хрен я подписан на rss без talks'ов если публика с маленьким шкворцем давно считает общеупотребимой практикой написать пост в general с расчётом на то чтобы модераторы перенесли его в talks? Пожалуйста, не переносите такие посты никуда, а удаляйте их нафиг.
Не могу при помощи qdbus из под root'а пощупать пользовательскую шину. Вместо списка сервисов получаю сообщение о том что нельзя прицепиться к dbus-демону.
~# dbus-launch qdbus --address unix:abstract=/tmp/dbus-o8EgpIA7Dp,guid=ef9b8daf930689ef633ea90c52a60387
No protocol specified
Could not connect to D-Bus server:
org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.
Каких кому прав не хватает? Что я делаю не так? Дистрибутив Slackware.
Задался совершенно детским вопросом. Как правильно быстро передавать QString в функцию, которая этот QString изменять не будет: по константной ссылке или по значению? Строго говоря, сам объект QString это прокси для неявно пошаренных данных, содержащий исключительно указатель на эти данные. То есть размер у прокси-объекта абсолютно аналогичен размеру ссылки. Недостатком ссылки является необходимость разыменовывать два указателя вместо одного (и не исключено что многократно). Недостатком объекта — отработка конструктора и деструктора с передёргиванием счётчика ссылок туда-сюда. При этом сам Qt поголовно использует для этих целей константные ссылки. Есть ещё какие-то аргументы? Или это исключительно читабельности ради?
Написал обработчик QChildEvent'а. Столкнулся с тем что не могу dynamic_cast'ом скастовать указатель на child'а от QObject*'а к конкретному типу. Полез в документацию. Много думал.
В связи с этим два вопроса. Первый: как они защитили указатель dynamic_cast'а? Как можно вернуть указатель на объект базового класса так чтобы его нельзя скастовать к указатель на производный класс (при условии что по указанному адресу лежит объект именно этого производного класса)? Vtbl у класса есть.
Второй: как и зачем QChildEvent может оказаться в петле событий до того как child будет сконструирован?
Есть сложный виджет состоящий из TableView и пары спинбоксов. Хочется изобразить соответствующую tab-навигацию (чтобы фокус пройдя по всей таблицы проходил бы по спинбоксам и кнопкам). Но я пока никак не придумаю как это как следует сделать. Можно перехватывать Tab'ы в KeyEvent'ах и управлять навигацией так, но это какой-то хардкод. Есть более акуратные решения?
Есть приложение снабжённое плагинами. Плагины работают, всё хорошо. Однако встал вопрос эксплуатации всего этого безобразия. Приложение на состоит из исполняемого файла с функцией main, библиотеки содержащей интерфейс для плагинов и собственно самих плагинов подгружаемых в рантайме. Мне кажется, что разумнее всего размещать плагины в специальной дирекории лежащей в той же директории, что и библиотека-интерфейс. Собственно вопрос в том как узнать где находится эта библиотека, если её положение зависит от операционной системы и вообще целиком на совести у линкера?
Пришлось тут вспомнить что такое Qt Pimpl. В документации об этом начколько мне известно ничего нет. Поэтому в очередной раз достал вот этот хабро-пост. Всё хорошо, но никак не соображу зачем нужны макросы Q_Q и Q_D, когда сами объекты содержат указатели на публичный интерфейс и на приватную реализацию? Кроме того я так и не понял для чего нужен защищённый конструтор. Можно как-нибудь разъяснить этот момент?
Какое-то время назад на ЛОРе проскакивал скрин с QtCurve адаптированной к Qt5. Может быть кто-то помнит автора скрина, а у автора сохранились исходники?
Есть таблица по совместительству являющаяся QTableModel которая должна быть наполнена double'ами с массой условий. Ячейки таблицы могут принимать специальное значение (либо -1, либо NaN), которое таблица отдаёт представлениям как пустую ячейку. Эта часть работает.
Таблица представляется через QTableView. Для редактирования ячейки используются QDoubleSpinBox (посаженный туда через ItemDelegate'ы). Собственно нужно сделать так, чтобы помимо диапазона ввода валидных значений, можно было бы ввести скажем пустую строку, которая бы возвращала в таблицу специальное значение. При этом ввод самого пустого значения должен по хорошему быть невалиден. В связи с эти возникает ряд вопросов:
Почему SpinBox'ы не умеют QValidator? Вместе установки своего валидатора мне предлагают унаследовать виджет и переопределить в точности те же методы что и валидатора. Это странное поведение вообще хоть чем-нибудь обусловлено или это какая-то традиция?
После обработки строки методом fixup она снова подвергается валидации, что всё равно требует внесения специального значения в диапазон валидных. Но даже в таком случае, метод fixup вызывается только после нажатия enter в той или иной ячейки. В случае нажатия tab для перехода к следующей ячейке он не вызывается. В этом есть какой-то смысл и можно ли как-то изменить это поведение?
Что ещё можно изменить в QDoubleSpinBox'е чтобы достигнуть поставленной задачи?
Есть наследник QAbstractTableModel для которого перегружены insertRows и removeRows. Что-то никак в толк не возьму, нужно ли из них кидать dataChanged (а ведь data то и в самом деле changed) и если да, то какой диапазон указывать. В документации по этому поводу ничего не нашёл. Как с этим лучше поступить?
Хочется писать /tmp в tmpfs. 4G памяти для моих ежидневных нужд откровенно много. Однако есть один нюанс: время от времени я собираю ghc, llvm, qt и ещё чёрт знает что, причём не исключено что одновременно. Место под нужды этого процесса (для распаковки тарболов, для записи объектных файлов, для формирования пакета) берётся именно в /tmp из-за чего tmpfs заполняется и процесс трагически обрывается на самом интересном месте. В принципе проблема решается при помощи swap, но есть несколько нюансов. Во-первых мне бы хотелось чтобы во всех случаях свопился tmpfs, а не паямть приложений. Во-вторых у меня уже есть один swap для хибернейта и мне хотелось бы хибернейт оставить рабочим. Что можно сделать в такой ситуации?
Есть ноутбук с функциональными клавишами, которые конечно же не (все) работают. Как бы мне повесить вызов кастомной программы (например скрипта для изменения яркости подсветки клавиатуры) на эти клавиши, если у меня есть для них скан коды?
Купил ноутбук. Всем замечательный, только у тачпада одна кнопка. Левая. А нужна правая. Вместо левого клика я давно привык делать тап. Вместо клика средней кнопкой — тап двумя пальцами. Хочется чтобы клик по тачпаду был именно правым кликом. Как бы такое сделать?
Впервые за много лет не могу поставить слаку. Купил ноутбук с UEFI. Нашёл в интернете руководство и следуя ему выделил в начале диска 100mb под UEFI (gdisk его видит как UEFI раздел, размечен в FAT32). Поместил туда бинарник elilo, ядро и elilo.conf. На следующем разделе живёт корень. В elilo.conf в качестве корня для ядра указан именно он. Эффекта все эти действия не оказали. Что я делаю не так?
Ищу инструмент для отображения трёхмерных графиков с возможностью их всяческого верчения и прочего 3d. Присматриваюсь к VTK. Меня смущает в общем-то две вещи: во-первых для моих задач это вроде как из пушки по воробьям, во-вторых все примеры которые я видел в составе VTK выглядят как создание поверхность и операции над её отображением. Мне же в реалтайме надо поверхность изменять (по меньшей мере дорисовывать). Можно ли решить эту задачу при помощи данного инструмента и если да, то насколько при этом просядет производительность?
Нужен метод симметричного шифрования для которого было бы справедливо что данные последовательно зашифрованные несколькими ключами, можно было бы расшифровать теми же ключами в произвольном порядке, то есть что-то вроде:
val == encrypt key1 val >>= encrypt key2 >>= encrypt key3 >>= uncrypt key1 >>= uncrypt key3 >>= uncrypt key2
При условии что encrypt — функция шифрующая открытый текст по ключу, а uncrypt — функция расшифровывающая зашифрованное значение по ключу. Существуют ли какие-то рабочие решения или хотя бы интересные статьи по этой теме?
Имеется хитрый кастомный диалог. Левая его половина представляет собой QListView, а правая — стековый лэйаут QDialog'ов, которые прокручиваются в соответствии с QListView. Одним из диалогов в этом стеке является QFileDialog. Когда стек прокручивается до него, он перехватывает фокус с QListView на себя, чем несказанно бесит. Как можно победить подобное поведение?
Хочется писать и читать tar из программы на C++. Вызывать внешний tar или использовать исходники GNU tar не хочется. Запускать программу хочется как минимум на linux-x86, linux-x86_64, linux-arm и windows. Проблема в том, что единственная найденная мной библиотека для работы с tar'ом написана на haskell и для haskell. В принципе сложного там ничего быть не должно и можно реализовать tar самому, но не хотелось бы. Есть какие-нибудь варианты?