2013-04-10 6 views
6

मेरे क्यूटी एप्लिकेशन में ड्राइविंग और ग्राफिक्स के आधार पर सीधे और उससे संबंधित मार्जिन, पिक्सल और अन्य सामान के साथ एक बड़ी स्टाइलशीट है। मुझे डिजाइनर को वह सारी चीज़ें देने में खुशी होगी, लेकिन स्टाइलशीट को .ui फ़ाइल में रखा गया है जो डिजाइनर के लिए सुविधाजनक नहीं है; वह एक अलग फ़ाइल देखना पसंद करेगी और उसे अपने सामान्य उपकरण का उपयोग करके संपादित करना चाहेंगे।एक क्यूटी स्टाइलशीट को बाहरी फ़ाइल में कैसे स्थानांतरित करें, लेकिन इसे संसाधनों में संकलित रखें?

मैं जो चाहता हूं वह स्टाइलशीट को बाहरी .qss फ़ाइल में ले जा रहा है, उस फ़ाइल को प्रोग्राम संसाधनों में जोड़कर और .ui फ़ाइल से लिंक कर रहा है, इसलिए स्टाइलशीट संकलित और स्वचालित रूप से विजेट द्वारा उपयोग की जाएगी, और एप्लिकेशन स्टाइलशीट फ़ाइल को रखने और इसे रनटाइम पर लोड करने की आवश्यकता नहीं होगी।

इसे कैसे प्राप्त करें?

उत्तर

11

अपनी सभी शैलियों को एक फ़ाइल में कॉपी करें और इसे stylesheet.qss जैसे किसी नाम पर पुनर्नामित करें, फिर इसे अपने qrc फ़ाइल में एक नई संसाधन आइटम के रूप में शामिल करें। यदि आप पहले से ही हैं, तो आप इसे अपने qrc फ़ाइल को संपादित करके कर सकते हैं। नया संसाधन जोड़ने के तरीके पर Refer documentation

फिर रन कोड पर qss फ़ाइल की सामग्री को पढ़ने के लिए अपने कोड को संशोधित करें और अपने एप्लिकेशन में शैलियों को लागू करें।

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 

    QFile file(":/stylesheet.qss"); 
    if(file.open(QIODevice::ReadOnly | QIODevice::Text)) 
    { 
     a.setStyleSheet(file.readAll()); 
     file.close(); 
    } 

    MainWindow w; 
    w.show(); 

    return a.exec(); 
} 

नोट: जब आप stylesheet.qss में एक परिवर्तन करते हैं, आप qrc फ़ाइल परिवर्तनों को प्रभावी करने के लिए संकलित करने के लिए किया है।

+1

बात करने के लिए पर्याप्त और सीधे सरल है, धन्यवाद! –

+0

यह रिसोर्स भी बहुत उपयोगी है: [https://www.youtube.com/watch?v=sWIQIi4lg58 ](https://www.youtube.com/watch?v=sWIQIi4lg58) – nono

+0

सुनिश्चित नहीं है कि क्यों, लेकिन ऊपर कोड मेरे लिए काम नहीं किया (क्यूटी 5.9.1)। मैंने QByteString को क्यूस्ट्रिंग में परिवर्तित कर दिया और अब सबकुछ काम कर रहा है: 'क्यूस्ट्रिंग शैली (file.readAll()); a.setStyleSheet (शैली); ' – semanser

2

जब मैं बाहरी फ़ाइल से एप्लिकेशन चलाता हूं तो स्टाइलशीट सेट करता हूं। इसके अलावा, डिजाइनर के लिए हमने 'रीलोड स्टाइलशीट' में एक बटन जोड़ा। इस तरह डिजाइनर फ़ाइल को संशोधित कर सकता है और तुरंत परिवर्तनों को आजमा सकता है।

उदाहरण के लिए:

QFile styleFile("stylesheet.qss"); 
styleFile.open(QFile::ReadOnly); 
QByteArray bytes = styleFile.readAll(); 
QApplication *app = (QApplication*)QApplication::instance(); 
app->setStyleSheet(newStyleSheet); 
संबंधित मुद्दे