QList имеет только указатель на его содержимое. Поэтому, когда вы делаете копию QList, он на самом деле не копирует все содержимое, он просто копирует указатель. Всякий раз, когда вы изменяете список, создается копия, чтобы гарантировать, что он не изменяет содержимое других объектов. Смотрите это: http://doc.qt.nokia.com/4.7-snapshot/qshareddatapointer.html
QList действительно использует конструктор копирования, поэтому, если ваши объекты содержат много данных, может быть нецелесообразно использовать прямые объекты в QList, поскольку копирование может вызвать некоторые накладные расходы, когда список должен расти.
Другим решением будет использование QSharedDataPointer для создания функциональности, аналогичной QList.
Обратите внимание, что большинство классов Qt уже используют это, поэтому если ваш класс содержит вещи, перечисленные здесь: http://doc.qt.nokia.com/4.7-snapshot/implicit-sharing.html В некоторой степени нет необходимости использовать QSharedDataPointer.
Есть одна вещь, которую вы не прояснили и которая имеет отношение, я думаю. Вы хотите, чтобы глобальный статический объект A имел те же данные, что и объект в списке?
Это достигается с помощью указателей или QExplicitlySharedDataPointer.
QExplicitlySharedDataPointer во многом совпадает с QSharedDataPointer, за одним исключением.
Он не делает копию данных при изменении. Вот некоторая документация http://doc.qt.nokia.com/4.7-snapshot/qexplicitlyshareddatapointer.html
Я часто использовал эти классы и нашел их очень полезными и совсем не сложными в использовании.