各位大俠,請教一個問題,qss中如何可以實作控制元件的樣式更新?
例如,有以下的一個應用場景:
一個QLineEdit 輸入框:
當焦點失去后,會對之進行校驗是否符合要求,如果不符合,這個輸入框顏色等樣式發生變化:
qss如下:
/* --------------------QLineEdit--------------------------*/
QLineEdit{border:1px solid #ddd; width:100%;font-size:14px;height:24px;line-height:24px;padding:4px;}
QLineEdit{border:1px solid #bbb;}
QLineEdit{border:1.3px solid #3bb4f2;}
QLineEdit:disabled,QLineEdit:disabled:focus{background-color:#ededed;border-color:#ddd;}
//////////這個是關鍵的地方
QLineEdit:如果是錯誤的話{background-color:#fbe2e2;border-color:#c66161;color:#c00;}
問題:應該如何在qss中寫錯誤的那段標識?如何在程式中反應出這個樣式?同時,當輸入正確后,如何恢復正常的QLineEdit的樣式?
在線等,謝謝
uj5u.com熱心網友回復:
QLineEdit怎么判斷你的輸入是否符合,這需要你自己判斷。不符合你重新設定一下lineEdit的qss就行了uj5u.com熱心網友回復:
如何判斷,這個我是比較容易實作的,但是怎么重置呢?我希望重置后的樣式是寫在qss中的
uj5u.com熱心網友回復:
自定義QSS屬性, 去翻翻QSS幫助檔案,看怎么自定義qss的屬性 來控制uj5u.com熱心網友回復:

assistance里面有講。
uj5u.com熱心網友回復:
您好:
我看了您給的手冊檔案,但是我還是沒有完成:
現在我針對樣式設定了一個屬性:
QLineEdit[stated="true"]{background-color:#fbe2e2;border-color:#c66161;color:#c00}
如果在程式剛開始加載的時候,我設定setProperty("stated",true);,則這個控制元件就顯示這個樣的樣式,
但是如果一開始QLineEdit的stated屬性是false,然后我通過點擊按鈕后設定stated= true;則這個控制元件一點反應沒有,
請問這個是為什么?我應該還是少一一些操作。。麻煩您了。
uj5u.com熱心網友回復:
您好。
現在我針對樣式設定了一個屬性:
QLineEdit[stated="true"]{background-color:#fbe2e2;border-color:#c66161;color:#c00}
如果在程式剛開始加載的時候,我設定setProperty("stated",true);,則這個控制元件就顯示這個樣的樣式,
但是如果一開始QLineEdit的stated屬性是false,然后我通過點擊按鈕后設定stated= true;則這個控制元件一點反應沒有,
請問這個是為什么?我應該還是少一一些操作。。麻煩您了。
uj5u.com熱心網友回復:
可以針對ObjectName設定QSS:lineEdit.setObjectName('normal')
------------------------
QSS 檔案:
QLineEdit#normal { background: ..............;}
QLineEdit#error { background: ................;}
-------------------------
判斷為錯誤時,設定一下
lineEdit.setObjectName('error')
不過我沒試過,你試試這樣行不行……
uj5u.com熱心網友回復:
lineEdit.update() ??
自定義QSS屬性, 去翻翻QSS幫助檔案,看怎么自定義qss的屬性 來控制
您好。
現在我針對樣式設定了一個屬性:
QLineEdit[stated="true"]{background-color:#fbe2e2;border-color:#c66161;color:#c00}
如果在程式剛開始加載的時候,我設定setProperty("stated",true);,則這個控制元件就顯示這個樣的樣式,
但是如果一開始QLineEdit的stated屬性是false,然后我通過點擊按鈕后設定stated= true;則這個控制元件一點反應沒有,
請問這個是為什么?我應該還是少一一些操作。。麻煩您了。
自定義QSS屬性, 去翻翻QSS幫助檔案,看怎么自定義qss的屬性 來控制
您好。
現在我針對樣式設定了一個屬性:
QLineEdit[stated="true"]{background-color:#fbe2e2;border-color:#c66161;color:#c00}
如果在程式剛開始加載的時候,我設定setProperty("stated",true);,則這個控制元件就顯示這個樣的樣式,
但是如果一開始QLineEdit的stated屬性是false,然后我通過點擊按鈕后設定stated= true;則這個控制元件一點反應沒有,
請問這個是為什么?我應該還是少一一些操作。。麻煩您了。
自定義QSS屬性, 去翻翻QSS幫助檔案,看怎么自定義qss的屬性 來控制
您好。
現在我針對樣式設定了一個屬性:
QLineEdit[stated="true"]{background-color:#fbe2e2;border-color:#c66161;color:#c00}
如果在程式剛開始加載的時候,我設定setProperty("stated",true);,則這個控制元件就顯示這個樣的樣式,
但是如果一開始QLineEdit的stated屬性是false,然后我通過點擊按鈕后設定stated= true;則這個控制元件一點反應沒有,
請問這個是為什么?我應該還是少一一些操作。。麻煩您了。
自定義QSS屬性, 去翻翻QSS幫助檔案,看怎么自定義qss的屬性 來控制
您好。
現在我針對樣式設定了一個屬性:
QLineEdit[stated="true"]{background-color:#fbe2e2;border-color:#c66161;color:#c00}
如果在程式剛開始加載的時候,我設定setProperty("stated",true);,則這個控制元件就顯示這個樣的樣式,
但是如果一開始QLineEdit的stated屬性是false,然后我通過點擊按鈕后設定stated= true;則這個控制元件一點反應沒有,
請問這個是為什么?我應該還是少一一些操作。。麻煩您了。
自定義QSS屬性, 去翻翻QSS幫助檔案,看怎么自定義qss的屬性 來控制
您好。
現在我針對樣式設定了一個屬性:
QLineEdit[stated="true"]{background-color:#fbe2e2;border-color:#c66161;color:#c00}
如果在程式剛開始加載的時候,我設定setProperty("stated",true);,則這個控制元件就顯示這個樣的樣式,
但是如果一開始QLineEdit的stated屬性是false,然后我通過點擊按鈕后設定stated= true;則這個控制元件一點反應沒有,
請問這個是為什么?我應該還是少一一些操作。。麻煩您了。
uj5u.com熱心網友回復:
樓主解決了么 求方法~~uj5u.com熱心網友回復:
自定義QSS屬性, 去翻翻QSS幫助檔案,看怎么自定義qss的屬性 來控制
您好。
現在我針對樣式設定了一個屬性:
QLineEdit[stated="true"]{background-color:#fbe2e2;border-color:#c66161;color:#c00}
如果在程式剛開始加載的時候,我設定setProperty("stated",true);,則這個控制元件就顯示這個樣的樣式,
但是如果一開始QLineEdit的stated屬性是false,然后我通過點擊按鈕后設定stated= true;則這個控制元件一點反應沒有,
請問這個是為什么?我應該還是少一一些操作。。麻煩您了。
我是設定屬性,再重新載入樣式表。
uj5u.com熱心網友回復:
https://www.cnblogs.com/liuhan333/p/6776362.html兩句代碼解決,給后人看
uj5u.com熱心網友回復:
有這么麻煩的嗎?....我做賬號密碼輸入框的時候做過類似的,Qt有失去焦點的 信號(還是事件來著忘了),觸發的時候自己去比對資料,通過是不是你要的資料來重新 setStyleSheet,重設的QSS要包含所有狀態(hover press release focus里你需要的),重新選中的時候再重設為正常的QSSuj5u.com熱心網友回復:
m_label_okNg->setStyleSheet("QLabel{background:gray;color:white;font-size:36pt;font-weight:bold;} QLabel[ok=true]{background:green;} QLabel[ok=false]{background:red;}");
m_label_okNg->setProperty("ok", true);//ok的時候
m_label_okNg->setProperty("ok", false);//ng的時候
uj5u.com熱心網友回復:
設定了屬性,樣式進行多載uj5u.com熱心網友回復:
關聯信號槽,在文本判斷后重新設定qss轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/128006.html
標籤:Qt
上一篇:嵌入式linux系統下,QT應用程式界面需要點擊兩次問題
下一篇:使用CSS美化QTreeView
