我有一个主窗口,在其中有一个Qtableview,方法是单击插入记录,当我添加记录并关闭第二个窗口时,我转到其他模式窗口以添加记录,然后回到主窗口,但是qtableview不显示添加的新记录。记录在数据库中。
我已经使它能够以某种方式工作:`
void MainWindow::showEvent( QShowEvent* event ) {
QWidget::showEvent( event );
updTbl();
}`
但是它仅在窗口最小化时起作用。
答案 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);
}