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

时间:2018-07-28 06:53:52

标签: c++ qt sqlite

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

我已经使它能够以某种方式工作:`

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

}`

但是它仅在窗口最小化时起作用。

2 个答案:

答案 0 :(得分:0)

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

void QWidget::focusInEvent(QFocusEvent *event)

void QWidget::focusOutEvent(QFocusEvent *event)

如果使用QtCreator,请转到mainwindow.h并搜索“类MainWindow:public QMainWindow”行。右键单击QMainWindow->重构->插入虚拟函数。这是查找存在哪些虚函数并且可以重载的虚函数的简便方法,您可以从此处选择focusInEvent和focusOutEvent。

答案 1 :(得分:-2)

按以下方式处理激活/停用事件将为您提供所需的行为

// 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