2012-01-26 32 views
1

我有一個應用程序,根據用戶輸入寫入自己的樣式表。它通過用戶選擇更改各個小部件的背景顏色/圖像。CSS的Qt錯誤處理

每當我開始使用此功能時,一切都很完美。然而,最終事情停滯不前。即使樣式表不斷被添加到應用程序並設置到應用程序上,也不會對窗口進行可視化更改。

由於在生成CSS時涉及到一些強大的字符串操作,我的猜測是CSS中有一些錯誤會阻止Qt解釋所有這些。

我不能發現這個錯誤!我的CSS始終處於

"#widget { 'correctly formatted properties';} #nextwidget..." 

我知道的一個事實(由算法的限制,並通過檢查破碎CSS文件)格式,即設置爲每個插件的性質是語法正確。

我發現,這樣做不過...

#widget {color: ;} 

...不解釋這些字符串的休息站的Qt,但使用不存在的屬性(如:{ goose: 2 })一樣。

那麼,什麼樣的錯誤被Qt解僱了,什麼停止瞭解釋文件的其餘部分?我無法在Qt文檔中找到此類列表或任何類別。
(事實上,還有的甚至沒有在PyQt4的包中的任何樣式表文件。)

在我的CSS的情況下,我申請...

{color: x; background-image:, y, background-color: z } 

到每一個插件的用戶選擇(用x,y,z是正確的替代)。
是否有任何可見的小部件不支持這些屬性?
(這可能是我的問題的根源!)


我試圖把SS的驗證,這裏是造成錯誤,這我不知道爲什麼兩個CSS片段!

#centralwidget { color: #ffffff ; 
       background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #aaff00, stop: 1 #aac300) 
       } 

和...

#Display { background-image: url('+NewTextureFile+'); 
     background-repeat: repeat-xy; 
     } 

如果任何人都可以用這些也幫助,我會非常感激!
(這也可能是很明顯我已經提高了我的方式進入CSS ...)

編輯: @阿瓦里斯:

對不起這個破碎的CSS不是最小的;我不知道哪個部分壞了!

我懷疑這是因爲我沒有用';'來完成所有屬性。

#tab{color: #000000 ;background-color: #ff0000 } #tab{color: #000000 ;background-image: url(E:/ChemCalc ULTIMATE/ChemCalc ULTIMATE/Texture Files/Penguins.jpg);background-repeat: repeat-xy; } #Amount_Unit{color: #000000 ;background-color: #aaff00 } #Conc_Unit2{color: #000000 ;background-color: #aaff00 } #pushButton{color: #000000 ;background-color: #aaff00 } #tab_2{color: #000000 ;background-image: url(E:/ChemCalc ULTIMATE/ChemCalc ULTIMATE/Texture Files/Penguins.jpg);background-repeat: repeat-xy; } #RMM_Output{color: #000000 ;background-color: #aaff00 } #Conc_Unit1{color: #000000 ;background-color: #aaff00 } #UnitText{color: #000000 ;; } #Amount_Input{color: #000000 ;; } #Concentration_Input{color: #000000 ;; } #Amount_Output{color: #000000 ;; } #Subshell_Element{color: #000000 ;background-color: #00aaff } #Charge{color: #000000 ;background-color: #00aaff } #Simple_Config{color: #000000 ;background-color: #00aaff } #Actual_Config{color: #000000 ;background-color: #00aaff } #Save_Simple_Button{color: #ffffff ;background-color: #aaff00 } #Save_Actual_Button{color: #ffffff ;background-color: #aaff00 } #pushButton_2{color: #ffffff ;background-color: #aaff00 } #centralwidget{color: #ffffff ;background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #aaff00, stop: 1 #aac300) } #pushButton_3{color: #000000 ;background-color: #ff0000 } #Calculate_Proportions_Button{color: #000000 ;background-color: #f80000 } #{color: #000000 ;background-image: url(E:/ChemCalc ULTIMATE/ChemCalc ULTIMATE/Texture Files/Koala.jpg);background-repeat: repeat-xy; } #tab_4{color: #000000 ;background-image: url(E:/ChemCalc ULTIMATE/ChemCalc ULTIMATE/Texture Files/Koala.jpg);background-repeat: repeat-xy; } #LayoutContainer1{color: #000000 ;background-image: url(E:/ChemCalc ULTIMATE/ChemCalc ULTIMATE/Texture Files/Koala.jpg);background-repeat: repeat-xy; } #AmountInput{color: #ffaa00 ;background-color: #ffff00 } #tab_5{color: #000000 ;background-color: #ffffff } #menubar{color: #000000 ;background-color: #ffffff } #tabWidget{color: #000000 ;background-color: #ffffff } #Reaction_Element_Holder{color: #000000 ;background-image: url(E:/ChemCalc ULTIMATE/ChemCalc ULTIMATE/Texture Files/Penguins.jpg);background-repeat: repeat-xy; } 

感謝您的閱讀!


PyQt4的
蟒蛇2.7.2
Windows 7的

+0

我已經建立我應該使用背景重複:重複而不是重複-xy,但-xy正在工作! –

+0

你能展示一個'破'的CSS例子嗎(儘可能少)? – Avaris

+0

這裏有兩個例子被認爲是被Validator破壞的,儘管它們在QSS中工作得很好。我現在無法通過程序複製破壞的樣式表! >:| –

回答

3

在例如CSS來看,有一個ID選擇沒有名稱:

#tab{color: #000000 ;background-color: #ff0000 } 
/* ... */ 
#{color: #000000 ;background-image: url(E:/ChemCalc ULTIMATE/ChemCalc ULTIMATE/Texture Files/Koala.jpg);background-repeat: repeat-xy; } # 
/* ... */ 
#Reaction_Element_Holder{color: #000000 ;background-image: url(E:/ChemCalc ULTIMATE/ChemCalc ULTIMATE/Texture Files/Penguins.jpg);background-repeat: repeat-xy; } 

它扔瞭解析器和製作在這之後的其餘CSS無效。

作爲一個觀點,無名ID選擇器實際上是無效的CSS。 W3C驗證得出:

Parse Error Lexical error at line 1, column 2. Encountered: "{" (123), after : "#" 

爲:

#{ color: blue; } 
body { color: red; } 

但瀏覽器我測試(歌劇,火狐)很聰明,忽視和繼續。顯然,Qt CSS解析器不適合這種錯誤。