每次qt窗口获得焦点时调用函数

Calling function each time qt windows gain focus

本文关键字:调用 函数 焦点 qt 窗口 每次      更新时间:2023-10-16

我有一个主窗口,其中有一个Qtableview,通过单击插入记录,我在添加记录时转到其他模式窗口添加记录,并关闭第二个窗口,我回到主窗口,但Qtableview不显示添加的新记录。记录在数据库中。

我已经以某种方式使用

void MainWindow::showEvent( QShowEvent* event ) {
QWidget::showEvent( event );
updTbl();
}

但只有当窗口最小化时,它才有效。

QMainWindow还有两个来自QWidget 的事件处理程序

void QWidget::focusInEvent(QFocusEvent*事件(

void QWidget::focusOutEvent(QFocusEvent*事件(

如果您使用QtCreator,请转到您的mainwindow.h并搜索行"classMainWindow:publicQMainWindow"。右键单击QMainWindow->重构->插入虚拟函数。这是一种查找存在哪些虚拟函数以及哪些虚拟函数可以重载的简单方法,您可以从中选择focusInEvent和focusOutEvent。

如下处理激活/停用事件将为您提供所需的行为

// overloading event(QEvent*) method of QMainWindow
bool MainWindow::event(QEvent* e)
{
switch (e->type()) 
{
case QEvent::WindowActivate:
// gained focus
//Update Table
break;
case QEvent::WindowDeactivate:
// lost focus
break;
};
return QMainWindow::event(e);
}

参考编号:https://gist.github.com/01walid/2276009