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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: [1] 2 3 ... 21
1  Qt / Пользовательский интерфейс (GUI) / Открыть приложение из трея по значку на рабочем столе : Март 16, 2022, 16:24
Дня доброго! Собственно есть мысли как это сделать? Сворачивание в трей реализовано через QSystemTrayIcon и по меню трея оно разворачивается норм, но как его показать щелкнув по ссылке на рабочем столе? Есть варианты реализации на Qt или для этого только WinAPI юзать каким-то образом?
2  Qt / Многопоточное программирование, процессы / Re: Восстановление настроек приложения после перезапуска : Апрель 22, 2020, 22:53
сохранить настройки на диск не ?


с сохранением на диск не понятно, как разлечить штатное отключение всего девайса, от крэша одного приложения. по отключению по-хорошему нужно удалять файл и тогда при старте, если файла нет, то это нормальный запуск, если файл есть, то восстанавливаемся из файла. но проблема в том, что я не знаю момент когда удалять файл.. с RAM в этом плане проще, после полного перезапуска - все поновой. а в случае крэша прилаги, процесс будет висеть и шаред мемори останется..
3  Qt / Многопоточное программирование, процессы / Восстановление настроек приложения после перезапуска : Апрель 22, 2020, 15:31
Доброго дня! Как оптимальнее можно реализовать данный функционал? Приложение выполняется на девайсе под ОС VxWorks, без программной ф-ции выхода из приложения. (выключается по кнопке на девайсе). В случае крэша приложения, процесс перезапускается. Мне нужно отловить этот момент и восстановить некоторые настройки.
Проще видимо заюзать RAM и для перезапуска читать данные оттуда, если там ничего нет значит эта была штатная перезагрузка.
Вопрос как это реализовать.. можно заюзать QSharedMemory, но если я ее создам в том же процессе что и программа она же будет похерена при краше, да? Т.е. мне QSharedMemory нужно создавать в каком-то отдельном процессе, запускать его при старте всего девайса, и он будет жить всегда до штатного выключения. Правильно я понимаю?
Или есть еще какие-то способы как реализовать механизм восстановления
4  Qt / Qt Quick / Re: Правильное удаление объектов из ++ модели связанной со списком в QML [DONE] : Январь 24, 2020, 11:05
Eeeee вроде заработало. Всем спасибо! Eще потестирую.. но выглядит вроде все логично! Финальный вариант такой:
удаление одного
Код:
for(int i = 0; i < lstData.count(); ++i)
    {
        auto *data= dynamic_cast<Data*>(lstData[i]);
        if(data)
        {
            if(data->getNumber() == delNumber)
            {
                lstData[i]->deleteLater();
                lstData.removeAt(i);
                delNumber = -1;
                context->setContextProperty("M_Data", QVariant::fromValue(lstData));
                return true;
            }
        }
    }

удаление всех

Код:
context->setContextProperty("M_Data", QVariant::fromValue(QList<QObject*>()));
qDeleteAll(lstData);
lstData.clear();

остался открытый теоретический вопрос нужен ли деструктор виртульным делать в дочернем классе. вроде и без него работает..
здесь его объявляют только в базовом классе http://cpp-reference.ru/articles/virtual-destructor/
5  Qt / Qt Quick / Re: Правильное удаление объектов из ++ модели ассоциированной со списком в QML : Январь 24, 2020, 09:41
Тогда попробуйте вначале установить новый новый список, в котором уже нет удаленных строк и только после этого удалить сами объекте.

т.е. в context->setContextProperty("M_Data", QVariant::fromValue(QList<QObject*>())); сначала установить пустой список, а потом уже чистить.. это идея, попробую
6  Qt / Qt Quick / Re: Правильное удаление объектов из ++ модели k : Январь 24, 2020, 09:39
Цитировать
Используйте qDeleteAll(lstData), а уже затем lstData.clear() и будет счастье.

Именно так и делаю, но счастье не приходит, когда я писал про "delete lstData.takeAt(i); для удаления одной строчки и qDeleteAll(lstData); для удаления всего" - это разные функции удаления. когда я удаляю все я делаю сначала qDeleteAll(lstData), а потом lstData.clear(). и он рандомно крашит с виртуальным конструктором, a без виртульного он крашит стабильно
7  Qt / Qt Quick / Re: Правильное удаление объектов из ++ модели ассоциированной со списком в QML : Январь 24, 2020, 09:33
Нельзя просто так взять и удалить данные в модели не уведомив при этом вьюшки.
Почитайте про:
void QAbstractItemModel::beginRemoveRows(const QModelIndex &parent, int first, int last)
void QAbstractItemModel::endRemoveRows()

Тоже касается и добавления данных в модель:
void QAbstractItemModel::beginInsertRows(const QModelIndex &parent, int first, int last)
void QAbstractItemModel::endInsertRows()

Ну и про другие случаи не забывайте, смотрите beginXXX, endXXX.

про эти методы я знаю, но где их взять если я не наследуюсь от QAbstractItemModel? по ссылке из доки, которую я привел в первом сообщении я использую
QObjectList-based Model, основанную просто на QList<QObject*>. если есть такой способ, то должен быть и корректный способо удаления без begin/end методов.
8  Qt / Qt Quick / Re: Правильное удаление объектов из ++ модели ассоциированной со списком в QML : Январь 23, 2020, 21:17
Как-то странно.. виртуальный деструктор нужен в базовом классе, для корректного удаления производных классов через указатель на базовый. Базовым классом для моего класса Data является QObject, а у него деструктор виртуальный! Поэтому вроде как все должно работать было и без добавления virtual в мой класс Data.. или что-то я не так понимаю
9  Qt / Qt Quick / Re: Правильное удаление объектов из ++ модели ассоциированной со списком в QML : Январь 23, 2020, 19:09
может дело в том, что деструктор не объявлен виртуальным?

это улучшило ситуацию, т.е. теперь он крашит не стабильно каждый раз, но все же крашит через какое-то количество удалений Грустный
10  Qt / Qt Quick / Правильное удаление объектов из ++ модели ассоциированной со списком в QML : Январь 23, 2020, 16:37
Доброго дня! Вопрос как правильно удалять данные из модели сделанной таким образом:
https://doc.qt.io/qt-5/qtquick-modelviewsdata-cppmodels.html пример с QObjectList-based Model.
В плюсовой части есть список QList<QObject*> lstData; в который добавляется структура типа
Код:
class Data: public QObject
{
    Q_OBJECT

    Q_PROPERTY(...)
  
    public:
        Data() {}

       ~Data()
        {
              qDebug() << "~Data";
        }

....

};

добавляется lstData.append(new Data());
после этого делается context->setContextProperty("M_Data", QVariant::fromValue(lstData));

в QML части:
Код:
ListView
{
      id: idTableBody
      anchors { fill: parent }                
      clip: true
      model: M_Data
}
и все вроде ок, когда я редактирую/добавляю данные в модель, а потом делаю обновление как написано по ссылке context->setContextProperty("M_Data", QVariant::fromValue(lstData));
интересности начинаются, когда я пытаюсь удалить данные..
чтобы удалить одну строку делаю так
Код:
for(int i = 0; i < lstData.count(); ++i)
    {
        auto *data= dynamic_cast<Data*>(lstData[i]);
        if(data)
        {
            if(data->getNumber() == delNumberData)
            {
                lstData.removeAt(i);
                delNumberReason = -1;
                return true;
            }
        }
    }
для удаления всех строк вызываю просто lstData.clear() и это работает, НО.. я не вижу, чтобы вызывался деструктор объекта!
removeAt(); и clear() вроде как и не должны его вызывать.. ок, тогда я делаю
delete lstData.takeAt(i); для удаления одной строчки и qDeleteAll(lstData); и для удаления всего списка и при этом деструктор вызывается с....(внимание!) обязательным крашем программы! Улыбающийся
и вот собственно как это разрулить счастье, кто отвечает за освобождение памяти.. и как это правильно сделать?
11  Qt / Пользовательский интерфейс (GUI) / Re: TabBar с наполненным контентом на каждый TabBatton : Октябрь 13, 2019, 14:07
нужно разделить создание кнопок TabBar и контента. Отдельно создаете TabBar и наполняете его кнопками
Код:
TabBar {
   id: barTabs
               
   Component
   {
          id: compBtnTab
          TabButton
          {
               .....
          }
    }
}
и отдельно компонент, где будет отображаться контент, например
Код:
StackLayout {
      id: stackPage
      width: parent.width; height: parent.height
}
и связываете их через именение индекса по нажатию на кнопку таба
Код:
onReleased: {                                       
    stackPage.currentIndex = barTabs.currentIndex
}
12  Qt / Qt Quick / VxWorks + QML : Май 04, 2019, 10:15
Доброго дня! Есть ли у кого опыт написания приложений на QML (Qt 5.9.7) под ОС VxWorks 7 ?!
Имеется куча странных багов отрисовки контролов, шрифтов.. хотелось бы пообщаться на тему или моей криворукости, или того, что версия 5.9.7 еще очень сырая под эту платформу (вышла относительно недавно)!
13  Qt / Qt Quick / Re: Редактировать XmlListModel : Декабрь 02, 2018, 22:07
ну походу нельзя.. нужно переписывать в ListModel и отображать уже ее
14  Qt / Qt Quick / Редактировать XmlListModel : Ноябрь 23, 2018, 16:47
Есть модель вида:
Код:
XmlListModel
{
       id: xmlDataTableModel
       query: "/data/raw"

       XmlRole { name: "idUser";        query: "id/string()";          }
       XmlRole { name: "numbUser";  query: "number/string()";  }
       XmlRole { name: "userState";   query: "state/string()";      }
}
Могу ли я как-то отредактировать скажем поле userState?
Пробовал через xmlDataTableModel.get(index).userState = "true". Ничего не происходит..
Qt 5.5.1
15  Qt / Общие вопросы / Re: Падение при попытке загрузить QPixmap : Январь 27, 2018, 12:45
А зачем лишниее конвертации
Код:
QPixmap pxmp(previewPath);
preview_ = pxmp.toImage();
может сразу в QImage ложить? либо может QPixmap одного достаточно будет для ваших задач.
Страниц: [1] 2 3 ... 21

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