对于包含在void MainWindow::Initialize()
{
Sleep(1000);
WidgetA->installEventFilter( this );
WidgetA->setVisible( true );
}
bool MainWindow::eventFilter( QObject *object, QEvent *event )
{
if( object == WidgetA )
{
if( event->type() == QEvent::Show )
{
Sleep(1000);
WidgetB->setVisible( true );
}
}
return QMainWindow::eventFilter( object, event );
}
标记中的<input>
(例如,<label>
),<label> <input type="checkbox"> Some Text </label>
标记也会点击<label>
标记上的点击事件。< / p>
但是,如果在点击<input>
(其他浏览器工作正常)时按下了shift键,Firefox也不会将点击事件传递给<input>
。正如本SO answer所述,这是Firefox特有的行为。
有没有办法在Firefox中关闭(或覆盖),以便在<label>
上发生班次+点击时,<input>
会收到shift +点击事件?
答案 0 :(得分:1)
由于firefox
阻止了这一点,您需要自己创建此行为。
以下是一个简单示例(请注意,由于shift
密钥,您可能需要添加/更改内容:
function show(event){
el = event.srcElement||event.target;
if (el.nodeName == "LABEL") {
event.preventDefault();
ev = new Event('click');
document.getElementById(el.getAttribute('for')).dispatchEvent(ev);
} else {
el.checked = !el.checked;
alert((el).id);
}
}
document.getElementById('checkbox').addEventListener('click', show, false);
document.getElementById('label').addEventListener('click', show, false);
&#13;
<input type="checkbox" id="checkbox"/>
<label for="checkbox" id="label">Click me!</label>
&#13;