2012-07-27 22 views
8

Qt ile global olarak nasıl bir stil sayfası (.qss stili kaynağı) yükleyebilirim?Qt genel stil sayfası yükleniyor?

QSS dosyası::

middleIntText -> setStyleSheet("QLineEdit { border: 1px solid gray; 
           border-radius: 5px;padding: 0 8px; 
           selection-background-color:darkgray; 
           height:40px;font-size:15px;}"); 

Bütün QLineEdit widget'larında tek seferde yüklemesinde çalışacak QLineEdit aşağıdaki düşündüm: Ben daha işler biraz daha verimli kılmak için çalışıyorum

QLineEdit {  border: 1px solid gray; 
       border-radius: 5px; 
       padding: 0 8px; 
       selection-background-color:darkgray; 
       height:40px; 
       font-size:15px;} 

cpp dosyası:

QApplication a(argc, argv); 
QFile stylesheet("formStyle.qss"); 
stylesheet.open(QFile::ReadOnly); 
QString setSheet = QLatin1String(stylesheet.readAll()); 
a.setStyleSheet(setSheet); 

Belki de bu doğru ve yanlış bir şey yapıyorum?

+0

[Qt Forum] 'da bazı erkeklerle konuşuyorum (http://qt-project.org/forums/viewthread/19124/) ve ne yapmam gerektiğini bildiğime inanıyorum. Yarın bir çözümle rapor edin. Temelde .qss, css sözdizimi dosyasının dosya konumu veya yalnızca aşağı doğru hareket ettirmek için doğru nesneyi seçebilir (yani. QMainWindow :: setStyleSheet (QString)). Yukarıdaki yöntem, hangisinin üçünden birini belirlediğimde çalışmalıdır. –

cevap

6

QStyleFactory'den stili için bir QStyle nesnesi talep eden QStyle * QApplication::setStyle (const QString & style) numaralı telefonu aradınız. Uygulama stili sayfasını ayarlayan void QApplication::setStyleSheet (const QString & sheet) numaralı telefonu aramanız gerekir. Bunun yerine, void QApplication::setStyleSheet (const QString & sheet) numaralı telefonu çağırmalısınız.

+0

Siz haklısınız. Bu hiç bir değişiklik yapmasa da, yukarıdaki kodu doğru sözdiziminde yansıtacak şekilde değiştirdim. Varsayılan cevaplarla ilgili sorumun altında bir yorum yayınladım. Yarın gerçek cevabı almalıyım. –

4

Yukarıdaki girişimde doğru sözdizimi vardır, ancak çalışmama nedenleri vardır.

Olası sorunlar:

  1. Kaynak dosyası (.qss)

  2. Yanlış üst Widget basamaklarını uygulamak için seçilmiş olmanın alındığını değildir.

  3. .qss (CSS) kodunun sözdizimi.

Yukarıdaki soruyu sormam gerektiğinden, bu üç meseleden ikisini aldım. Önce dosyaları doğru yere işaret etmem gerekti ve ikincisi doğrudan QWidget'e başvurmak zorunda kaldım.

QFile stylesheet("G:/Applications/Projects/ProspectTracker/formStyle.qss"); 
stylesheet.open(QFile::ReadOnly); 
QString setSheet = QLatin1String(stylesheet.readAll()); 
QWidget::setStyleSheet(setSheet); 

@Bill Yardımlarınız için teşekkür ederiz. .setStyle'u ve .setStyleSheet'u göndermediğimi belirtti. Yukarıdaki örnek kod artık bunu yansıtmıyor, ancak değiştirmediysem, hiçbir şey işe yaramazdı.

İlgili konular