Qt/FAQ/QtCore

Материал из Wiki.crossplatform.ru

(Различия между версиями)
Перейти к: навигация, поиск
(поменял категорию, добавил ссылки на потенциально полезные для читателя статьи)
(Работа с файлами и директориями)
Строка 68: Строка 68:
== Работа с плагинами ==
== Работа с плагинами ==
== Работа с файлами и директориями ==
== Работа с файлами и директориями ==
 +
===Рекурсивный поиск файлов и папок===
 +
<source lang="cpp-qt">// Сама рекурсивная функция для поиска файлов и папок
 +
bool FindFileAndDir( QString szDir)
 +
{
 +
qint16 qnFileCount = 0;
 +
QDir dir( szDir);
 +
foreach( QFileInfo fi, dir.entryInfoList())
 +
{
 +
QString szFileName = fi.absoluteFilePath();
 +
if( fi.isDir())
 +
{
 +
if( fi.fileName()=="." || fi.fileName()=="..")
 +
continue;
 +
FindFileAndDir( szFileName);
 +
}
 +
if( fi.isFile())
 +
{
 +
qnFileCount++;
 +
}
 +
}
 +
qDebug( "Dir: %s, File count: %d", qPrintable( szDir), qnFileCount);
 +
 +
return true;
 +
}
 +
 +
int main(int argc, char *argv[])
 +
{
 +
QString szDir="c:\\windows\\system32\\drivers";
 +
FindFileAndDir( szDir);
 +
 +
return 0;
 +
}</source>
== См. также ==
== См. также ==

Версия 16:11, 13 ноября 2008

Содержание

QtCore - ядро не-GUI классов, используемое другими модулями

Строки

За обработку строк в Qt отвечает класс QString, который хранит строки в Unicode в виде последовательностей 16-битовых символов QChar. Строки QString можно рассматривать как вектор символов QChar. При использовании QString не стоит беспокоится о таких вещах, как выделение достаточного объёма памяти или гарантирование завершения данных символом '\0'. Внутри QString могут быть символы '\0', функция length() вернет размер строки, включаю символы '\0'.

Манипуляции со строками

Класс QString содержит operator+, который обеспечивает конкатенацию двух строк и operator+= для добавления одной строки в конец другой:

   QString sz, sz1="cross", sz2="platform";
   sz = sz1 + sz2; // sz == "crossplatform"
   sz += ".ru";    // sz == "crossplatform.ru"

Также есть функция append, которая аналогична operator+=:

   QString sz;
   sz.append( "crossplatform");
   sz.append( ".ru");
   // sz == "crossplatform.ru"

Если функция append добавляет одну строку в конец другой, то функция prepend добавляет одну строку в начало другой:

   sz.prepend( "http://");
   // sz == "http://crossplatform.ru"

Также можно добавить нужную нам строку в любую позицию другой строки:

   sz.insert( 7, QString("wiki."));
   // sz == "http://wiki.crossplatform.ru"

Для совместимости с STL в классе QString введены функции push_back и push_front, которые аналогичны функциям append и prepend, соответственно:

   QString sz = "crossplatform";
   sz.push_back( ".ru");
   // sz == "crossplatform.ru"
   sz.push_front( "http://");
   // sz == "http://crossplatform.ru"

Если нужно удалить часть строки, то для этого есть функция remove:

     QString sz = "http://wiki.crossplatform.ru";
     sz.remove(7, 5);
     // sz == "http://crossplatform.ru"

или это же можно сделать так:

     QString sz = "http://wiki.crossplatform.ru";
     sz.remove( "wiki.");
     // sz == "http://crossplatform.ru"


Кодировка

Массивы

Контейнеры

Дата и время

Регулярные выражения

События

Процессы и синхронизация

Работа с плагинами

Работа с файлами и директориями

Рекурсивный поиск файлов и папок

// Сама рекурсивная функция для поиска файлов и папок
bool FindFileAndDir( QString szDir)
{
	qint16 qnFileCount = 0;
	QDir dir( szDir);
	foreach( QFileInfo fi, dir.entryInfoList())
	{
		QString szFileName = fi.absoluteFilePath();
		if( fi.isDir())
		{
			if( fi.fileName()=="." || fi.fileName()=="..")
				continue;
 
			FindFileAndDir( szFileName);
		}
		if( fi.isFile())
		{
			qnFileCount++;
		}
	}
	qDebug( "Dir: %s, File count: %d", qPrintable( szDir), qnFileCount);
 
	return true;
}
 
int main(int argc, char *argv[])
{
	QString szDir="c:\\windows\\system32\\drivers";
	FindFileAndDir( szDir);
 
	return 0;
}

См. также