2012-02-13 32 views
10

Vấn đề của tôi là vấn đề này. Tôi có danh sách các loại số khác nhau, ví dụ:Tạo danh sách dưới dạng Danh sách QVariant hoặc Danh sách QVariant

QList<qreal> mylist; 

Bây giờ, trong mã của tôi, tôi có chức năng mong đợi đối số QVariant là danh sách của tôi. Cách duy nhất tôi đã tìm thấy để làm điều này là sử dụng một cho cyle và chỉ cần thêm tất cả các dữ liệu trong mylist vào danh sách thứ hai

QList<QVariant> temp, 

ví dụ, và đi qua temp như một paramter.

Tôi đã tự hỏi liệu có cách nào khác để làm điều này không.

Cảm ơn bạn rất nhiều.

Trả lời

14

Tôi đã phải làm điều này nhiều lần và theo hiểu biết của tôi, cách duy nhất là tạo danh sách mới.

Nếu đây là một cái gì đó bạn phải làm thường xuyên với loại danh sách bạn có thể làm một chút gì đó fancier khác nhau:

template <typename T> 
QVariantList toVariantList(const QList<T> &list) 
{ 
    QVariantList newList; 
    foreach(const T &item, list) 
     newList << item; 

    return newList; 
} 

để khi bạn gọi chức năng của bạn mà mất trong danh sách QVariant, bạn có thể chỉ gọi

myFunction(toVariantList(myList)); 

Lưu ý rằng chức năng nhất định sẽ chỉ hoạt động đối với các loại có thể được chuyển đổi hoàn toàn thành QVariants.

+1

Đó là điều tôi sợ. Cảm ơn bạn! – aarelovich

+0

Lưu ý QVariant chính nó đã có thể chuyển đổi từ 'QList ' thành 'QVariantList'. Điều này có nghĩa là bạn cũng có thể sử dụng QVariant để thực hiện chuyển đổi. – Dreamcooled

Các vấn đề liên quan