Я успешно использовал QTableView
, отображая ~ 10000 строк, поэтому QTableView
может поддерживать его, но ваша коллекция оставляет желать лучшего.
QList
очень дорого для вставки в середине, так как вам нужно перераспределить все, что находится под индексом, который вы пытаетесь вставить, при условии, что вы только перемещаете указатели, но все еще.
Обычно для хранения данных я бы использовал std::vector< data_struct * >
вместо использования векторов строк. QVariant
вполне может представлять целые числа и другие типы, поэтому вам не нужно выполнять преобразование заранее.
Лучшее предложение, которое я могу придумать, это запустить gprof
или аналогичный инструмент для времени, где именно вы проводите время, а затем обратиться к этой конкретной части.