Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 459

Как сделать заполнение QMap методом своего класса

01.03.2026, 12:05. Показов 577. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! В Заполнить QMap из ini файла я задавал вопрос как заполнить QMap из ini файла, теперь меня интересует как сделать заполнение QMap методом своего класса.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.03.2026, 12:05
Ответы с готовыми решениями:

Преобразование qmap<k,v> в qmap<v,k>
Здравствуйте! Подскажите пожалуйста ни как не могу разобраться как сделать такое преобразование....

Как распечатать элемент QMap по найденному итератору?
typedef struct asd //структура это value { QString str; int num; }ASD; int main()...

QMap - как задать собственный функтор проверки уникальности ключа ?
Привет. Хочу в QMap в качестве ключа засунуть структуру с множеством полей. Как задать QMap-у...

10
 Аватар для Ender Che
519 / 409 / 77
Регистрация: 29.05.2018
Сообщений: 1,343
01.03.2026, 14:44
"Своего" - это какого? Что-то в духе:
C++ (Qt)
1
2
3
4
5
6
7
8
class MyClass : public QObject
{
    MyClass();
    ~MyClass();
 
public:
    QMap filler(const QString& pathToIniFile);
}
???
0
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 459
01.03.2026, 15:54  [ТС]
файл .h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
...
class MyClass : public QObject
{
    MyClass();
    ~MyClass();
 
public:
    // метод заполнения QMap 
 
private:
    QMap<QString, QPoint> in;
    void readSettings(); // чтение настроек из *.ini файла
}
файл .cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
#include "myclass.h"
...
void MyClass::readSettings() // чтение из *.ini файла
{
 QSettings settings("settings.ini", QSettings::IniFormat);
 //чтение
    for(const auto &group : settings.childGroups()){
        settings.beginGroup(group);
        for(const auto &key : settings.allKeys())
            in.insert(key, settings.value(key).toPoint());
        settings.endGroup();
}
Добавлено через 2 минуты
Мне нужно из других классов получать заполненный QMap
0
 Аватар для Ender Che
519 / 409 / 77
Регистрация: 29.05.2018
Сообщений: 1,343
01.03.2026, 16:30
Вам в теме, на которую вы дали в стартовом топике ссылку, разъяснили, как заполнять QMap. Дело за малым: вернуть его из метода вашего объекта.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class MyClass : public QObject
{
    MyClass();
    ~MyClass();
 
public:
    QMap<QString, QPoint> filler(const QString& pathToIniFile)
    {
        QMap<QString, QPoint><QString, QPoint><QString, QPoint> result;
 
        // Заполняем result из ini-файла по известной методике
 
        return result;
    }
}
Всё, дело в шляпе. Теперь можно ваш объект создать в любом другом месте и присвоить результат метода соответствующему QMap в том месте, где вы создали объект и применили метод filler.
0
 Аватар для 4blK4blPblK
6 / 6 / 0
Регистрация: 01.10.2023
Сообщений: 56
01.03.2026, 16:35
Цитата Сообщение от GAZot Посмотреть сообщение
void MyClass::readSettings()
это и есть
Цитата Сообщение от GAZot Посмотреть сообщение
заполнение QMap методом своего класса
Цитата Сообщение от GAZot Посмотреть сообщение
Мне нужно из других классов получать заполненный QMap
Если IDE QtCreator
навести курсор на "in" в файле.h, правый мышеклик, выбрать "рефакторинг" - "добавить getter"
C++ (Qt)
1
2
3
4
5
    QMap<QString, QPoint> getIn() const; //дефолтно генерится возврат по значению 
    //можно подправить:
    QMap<QString, QPoint>& getIn() ; //ссылка 
    const QMap<QString, QPoint>& getIn() const; //константная ссылка
    // у всех тело {return in;}
0
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 459
01.03.2026, 17:01  [ТС]
Правильно ли я понял файл .h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class MyClass : public QObject
{
    MyClass();
    ~MyClass();
 
public:
    QMap<QString, QPoint>& getIn()
    {
    return in;
    }
private:
    QMap<QString, QPoint> in;
    void readSettings(); // чтение настроек из *.ini файла
}
0
 Аватар для 4blK4blPblK
6 / 6 / 0
Регистрация: 01.10.2023
Сообщений: 56
01.03.2026, 17:31
Цитата Сообщение от GAZot Посмотреть сообщение
Правильно ли я понял
Если вы понимаете разницу между "по значению", "ссылка", "конст ссылка" и выбрали нужный себе вариант, то да.
Кстати, конструктор и деструктор должны быть public.
1
 Аватар для Ender Che
519 / 409 / 77
Регистрация: 29.05.2018
Сообщений: 1,343
01.03.2026, 18:50
Цитата Сообщение от GAZot Посмотреть сообщение
Правильно ли я понял файл .h
Собственно, да. Уважаемый 4blK4blPblK совершенно спрведливо насчёт public заметил.
Я бы, конечно, сделал так: getIn(const QString& pathToIniFile);. Чтобы совсем уж возможность переиспользовать при необходимости была.
0
1 / 3 / 0
Регистрация: 25.04.2015
Сообщений: 459
01.03.2026, 21:34  [ТС]
Было бы замечательно, если бы Вы мне простым языком объяснили почему конструктор и деструктор должны быть public.
0
 Аватар для Ender Che
519 / 409 / 77
Регистрация: 29.05.2018
Сообщений: 1,343
01.03.2026, 21:45
Цитата Сообщение от GAZot Посмотреть сообщение
почему конструктор и деструктор должны быть public
Потому, что согласно синтаксису языка C++, вы не имеете права обратиться к любой сущности из другого класса/файла, если возле него нет такого идентификатора.
1
 Аватар для 4blK4blPblK
6 / 6 / 0
Регистрация: 01.10.2023
Сообщений: 56
01.03.2026, 22:44
GAZot, попробуйте создать обьект класса MyClass - в логе будет все написано.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.03.2026, 22:44
Помогаю со студенческими работами здесь

Qmap insert как проверить валидность итератора?
Допустим я выполняю функцию insert, и виндовс отказывается выделять память(закончилась) что мне...

Как записать в файл QMap?
Есть QMap&lt;QListWidgetItem, Emp(Мой класс)&gt; надо куда то сохранить данные из QMap я думаю сохранить...

переопределение операторов, использование qmap
Здравствуйте, пытаюсь разобраться со стандартными классами контейнеров. Пытался создать класс...

Где объявлять переменную типа QMap
если делаю так, то все работает QMap&lt;QString, NMEATalkerDevice&gt; TalkerDeviceMap; ...

QMap из файла
Здравсвуйте, сразу прошу прощения , с Qt начал работать относительно не давно и многое ещё не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru