QT работи със списък от низове QStringList и стандартни контейнери Tulip
BlogNot. QT: Работа с QStringList String List и Standard Tulip Containers
QT: Работа с QStringList String List и Standard Tulip Containers
Тази статия за стандартните QT контейнери не споменава най-удобния за начинаещи контейнер, списъкът с низове QStringList, потомък на основния списък QList.
Класът QStringList е удобен, на първо място, защото има допълнителни методи за филтриране на данни и лесно взаимодейства със стандартните QT компоненти, които "разбират" QStrings.
Проектът WidgetTemplate, показан в бележката, е вид шаблон на приложение за обработка на списък от низове. Низовете се разтоварват от многоредовото текстово поле QTextEdit в QStringList и след това се обработват от удобните методи QStringList и QString, след което модифицираният списък се зарежда обратно. В моя случай обработката се свежда до филтриране на редовете на списъка (премахване на празни и състоящи се само от разделители на редове, след това компресиране на допълнителни разделители между думите на редовете и премахване на допълнителни интервали в началото или края на реда.
Също така, примерът показва как да направите горното меню в наследника на QWidget, просто регистрирайте всичко с "ръкохватки", не го намерих готово в мрежата. Обикновено QWidget няма вградено меню и не работи, например "директно" извикване на menuBar() от многобройни книги и уеб примери. По принцип проблемът се решава просто - достатъчно е да направите джаджата наследник на QApllication, а не на QWidget. Но можете също така да направите менюто не визуално, а логично, оставайки наследник на QWidget.
Заслужава да се отбележи и "модерният" начин за центриране на прозореца на джаджа върху работния плот с помощта на метода setGeometry. За да направим това, трябваше да предадем препратка към екземпляр на родителското приложение QApplication към конструктора на уиджета.
Проект за джаджа, създаден навъз основа на класа QWidget без създаване на формуляр (тъй като целият интерфейс е проектиран логически в конструктора).
файл widget.h
файл widget.cpp
файл main.cpp
Изтеглете папка с този QT5 проект в .zip архив (2 Kb)
За да демонстрираме, че работата с други контейнери може да бъде организирана по подобен начин, ще променим само съдържанието на метода doFile(). В кода, показан по-долу, въведените от потребителя низове във формата „ключ:стойност“, където „ключ“ е цяло число, а „стойност“ е низ, се записват в мултихеш (асоциативен масив, в който няколко стойности могат да съответстват на един ключ).
Полученият мултихеш се извежда към конзолата за отстраняване на грешки. В реална задача, след нейното формиране, можете да извършите всички необходими действия с данните, например да получите списък с всички стойности, съответстващи на ключа "0", можем да направим това:
Пример за потребителско въвеждане за генериране на хеш:
И изходът в QT конзолата за отстраняване на грешки за него: