想在qt中實現的效果:
一個QWidget窗口中間,有多個子窗口,選中每個窗口,每個窗口邊框變色,代表選中該子窗口。
如下效果,點擊某個子窗口:
enum Qt::FocusPolicy
This enum type defines the various policies a widget can have with respect to acquiring keyboard focus.
Constant
Value Description
Qt::TabFocus
0x1 接受Tab鍵焦點
Qt::ClickFocus 0x2
接受鼠標單擊做焦點
Qt::StrongFocus
TabFocus | ClickFocus | 0x8 接受Tab鍵和鼠標單擊做焦點
Qt::WheelFocus
StrongFocus | 0x4 滑輪作爲焦點選中事件
Qt::NoFocus
0 不接受焦點
1、首先要設置窗口/控件的聚焦策略
plotWidget_1->setFocusPolicy(Qt::StrongFocus);
2、在qss代碼中設置:
-
/*widget正常狀態*/
-
QWidget#widget_1{
-
border:3px solid #CFCFCF;
-
}
-
/*widge處於焦點狀態*/
-
QWidget#widget_1:focus{
-
border:5px solid #A5A6A1;
-
}
3、如果要想選中窗口中子控件,窗口就被聚焦的話。
比如選中widget中的button等控件,然後widget就被聚焦。
可以將button等控件設置成tabFocus或者noFocus狀態。
//當前widget下一個孩子焦點
bool focusNextChild()
//當前widget上一個孩子焦點
bool focusPreviousChild()
//焦點來的事件
virtual void focusInEvent(QFocusEvent * event)
//焦點離開的事件
virtual void focusOutEvent(QFocusEvent * event)
轉載自:http://blog.163.com/qimo601@126/blog/static/158220932014563012137/