Size: a a a

2020 June 30

AB

Alex B. in Qt
Может кто-то сталкивался с переводом текта в пермишенах на маке из qt приложения?
источник

М

Максим in Qt
Имеется класс для хранения енумов
class EnumerationStorage
{
   Q_GADGET
   Q_CLASSINFO("RegisterEnumClassesUnscoped", "false")
public:

   EnumerationStorage() = delete;

   enum class A
   {
       state1,
       state2,
   };
   Q_ENUM(A)
};

Имеется другой класс в котором я хочу использовать enum

class Client : public QObject
{
   Q_OBJECT
   Q_PROPERTY(EnumerationStorage::A a READ readA NOTIFY aChanged)
public:

.....
}

int main(...)
{
   qRegisterMetaType<EnumerationStorage::A>("A");
   qmlRegisterUncreatableMetaObject(EnumerationStorage::staticMetaObject, "EnumerationStorage", 1, 0, "EnumerationStorage", "Access to enums & flags only");
}

Вопрос как правильно использовать все это в qml? Потому что console.log(EnumerationStorage.A.state1) выводит как 0, а console.log(client.a) выводит как state1(мое начальное значение в конструкторе). Если qRegisterMetaType<EnumerationStorage::A>("A"); убрать, то это свойство client.a не может быть прочитано. Как все это соединить, что бы все работало?
источник

Т8

Т-34 85 in Qt
Mr.Mait
Можно в qSetMessagePattern сделать так
"%{if-fatal}"
   "\n\t\t\t"
   "%{backtrace depth=25 separator=\"\n\t\t\t\"}"
 "%{endif}"


Я глянул код qt_assert, он вызывает qFatal
https://code.woboq.org/qt5/qtbase/src/corelib/global/qglobal.cpp.html#_Z9qt_assertPKcS0_i

Но бэктрейс не работает на виндовсе :(

И в pro у меня такое. я вот не помню, для бэктрейса ли делал или для других вещей(было давно)
unix:!macx {
   QMAKE_CXXFLAGS += -rdynamic
   QMAKE_LFLAGS += -rdynamic
   QMAKE_LFLAGS += -Wl,--export-dynamic
   QMAKE_CXXFLAGS += -Wl,--export-dynamic
}
Спасибо, работает! А можно ли эту штуку как-то объединить с qInstallMessageHandler(), чтобы всё это добро редиректить в лог файл? Или придётся дёргать трейс руками?
источник

M

Mr.Mait in Qt
Т-34 85
Спасибо, работает! А можно ли эту штуку как-то объединить с qInstallMessageHandler(), чтобы всё это добро редиректить в лог файл? Или придётся дёргать трейс руками?
Тебе в собственном ханделере сделать так
messageHandler(QtMsgType type, const QMessageLogContext &context, const QString &message)
{
   const QString msg = qFormatLogMessage(type, context, message);

Этот метод qFormatLogMessage как раз формирует отформатированное сообщение по паттерну. Потом пиши в файл
источник

IM

Ian Mcewan in Qt
Здравствуйте, товарищи. QFutureWatcher имеет метод resultAt, подразумевающий, что один QFuture может хранить в себе что-то вроде списка задач. Есть ли возможность это использовать кроме как через QtConcurrent::map?
источник

Т8

Т-34 85 in Qt
Mr.Mait
Тебе в собственном ханделере сделать так
messageHandler(QtMsgType type, const QMessageLogContext &context, const QString &message)
{
   const QString msg = qFormatLogMessage(type, context, message);

Этот метод qFormatLogMessage как раз формирует отформатированное сообщение по паттерну. Потом пиши в файл
Офигеть, это так просто, да ещё и работает! Осталось подрубить ещё сигнал сегфолта к этой функции, и вообще огонь будет. Спасибо
источник

M

Mr.Mait in Qt
Т-34 85
Офигеть, это так просто, да ещё и работает! Осталось подрубить ещё сигнал сегфолта к этой функции, и вообще огонь будет. Спасибо
Делай паттерн стектрейса в %{if-fatal}%{backtrace
По сигналу sigsegv вызывай qFatal. qFatal напишет в лог сообщение и стектрейс и приложение упадет.
qFatal не возможно отключить и внутри в исходниках у qFatal стоит abort()
источник

Eあ

Elnee あめ in Qt
Спасибо
источник

B

Boryan in Qt
Всем привет👋 Как программу проверять на утечки памяти? У меня после каждого открытия getOpenFilesName и своего диалога(*printPreview) где-то на 4 мб увеличивается ОЗУ используемое, у диалога устанавливал wa_deleteOnClose), всем динамически создаваемым qt виджетам устанавливал родителя.
источник

П

Павел in Qt
Boryan
Всем привет👋 Как программу проверять на утечки памяти? У меня после каждого открытия getOpenFilesName и своего диалога(*printPreview) где-то на 4 мб увеличивается ОЗУ используемое, у диалога устанавливал wa_deleteOnClose), всем динамически создаваемым qt виджетам устанавливал родителя.
libasan
источник

B

Boryan in Qt
Павел
libasan
Спасибо, гляну👍
источник

П

Павел in Qt
ещё можно в valgrind посмотреть
источник

П

Павел in Qt
Boryan
Всем привет👋 Как программу проверять на утечки памяти? У меня после каждого открытия getOpenFilesName и своего диалога(*printPreview) где-то на 4 мб увеличивается ОЗУ используемое, у диалога устанавливал wa_deleteOnClose), всем динамически создаваемым qt виджетам устанавливал родителя.
источник

LA

Liber Azerate in Qt
https://pastebin.com/H4aiup0D
Объясните, пожалуйста, почему не работает. Если раскомментировать закоментированное и закомментировать остальное, то работает. Однако так – нет. Дело в ошибке на 25 строке, что появляется, если выбрать вариант connect с указателями на методы?
источник

E

Evilenzo in Qt
Есть в qml открывающийся список? Т.е. есть кнопка, при нажатии на неё выскакивают ещё несколько кнопок
источник

AS

Anatoly Shirokov in Qt
Evilenzo
Есть в qml открывающийся список? Т.е. есть кнопка, при нажатии на неё выскакивают ещё несколько кнопок
источник

E

Evilenzo in Qt
Спасибо
источник

Т8

Т-34 85 in Qt
Mr.Mait
Делай паттерн стектрейса в %{if-fatal}%{backtrace
По сигналу sigsegv вызывай qFatal. qFatal напишет в лог сообщение и стектрейс и приложение упадет.
qFatal не возможно отключить и внутри в исходниках у qFatal стоит abort()
Спасибо! Стоило бы ещё добавить, что флаг компиляции следует -Og подать, а то компилятор всё инлайнит. Ну, и -rdynamic линкеру, и глубину трейса побольше, а иначе полезность падает в 0.

Ваще супер, ещё раз спасибо!
источник

M

Mysle in Qt
Доброго времени суток, есть ли способ безопасно прервать "зависший" поток?
источник

Е

Егор in Qt
Mysle
Доброго времени суток, есть ли способ безопасно прервать "зависший" поток?
а чего он завис?
источник