更新对话框的主窗口
Update MainWindow for dialog
我有一个带有菜单的MainWindow
,该菜单打开一个注册对话框。注册后如何更新MainWindow
中的tableView ?
这是我的MainWindow
实现:
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){
ui->setupUi(this);
}
void MainWindow::list()
{
qDebug() << "test";
QSqlQueryModel *model = new QSqlQueryModel();
//model->clear();
model->setQuery("SELECT test_qt FROM db_qt WHERE strftime('%Y-%m-%d', date)='"+dateTime.toString("yyyy-MM-dd")+"'");
model->setHeaderData(0, Qt::Horizontal, tr("qt_test"));
ui->tableView->setModel(model);
}
void MainWindow::on_actionMenu_triggered()
{
dialog_test->show();
}
这是我的Dialog实现
Dialog_test::Dialog_test(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog_test)
{
ui->setupUi(this);
}
void Dialog_test::insert_date(){
QSqlQuery qry;
qry.prepare("INSERT INTO db_qt(test_qt) VALUES (?)");
qry.addBindValue(id);
if (qry.lastInsertId()>0){
QMessageBox::information(this,"test", "Success");
MainWindow *mw = new MainWindow(this);
mw->list(); // I call back list, but not update the tableView the MainWindow.
}
}
代码中的以下行
MainWindow *mw = new MainWindow(this);
创建一个新的主窗口并更新它的列表。我假设这确实发生了,但窗口从未显示,因此您看不到任何内容。你真正想做的是更新现有的主窗口的列表。
基本上有两种方法。你既可以获得一个指向现有主窗口的指针(它可以提供给对话框的构造函数或它自己的方法),也可以使用Qt的信号和槽的概念,这是我的观点。
首先,在对话框的头部定义信号:
... signals: void user_registered(); ...
然后在函数中发出信号
//MainWindow *mw = new MainWindow(this); //mw->list(); emit this->user_registered();
确保
list()
方法在主窗口头文件中被声明为SLOT
在MainWindow构造函数中连接信号以调用
list()
插槽:... QObject::connect(this->dialog_test, SIGNAL(user_registered()), this, SLOT(list())); ...
使用这种方法,对话框根本不需要知道主窗口。它基本上只是告诉任何对用户注册感兴趣的人,并且主窗口完全自己对它起作用。
相关文章:
- 如何检测窗口当前是否正在运行模式对话框?
- 在主窗口之前显示登录对话框并隐藏主窗口按钮
- 找不到没有具有类名 #32770 的窗口名称的父窗口的子窗口(对话框)
- 如何在主窗口标签的对话框中显示QLineEdit的输入
- C# - 显示对话框将所有者设置为非托管窗口
- Qt从主窗口打开对话框
- wxWidgets - 阻止 OS X 上的窗口模式对话框
- 有没有办法知道父窗口的类型(基于框架或对话框)?
- 如何以编程方式更改基于对话框的窗口的大小和位置?
- 模型对话框移动到主窗口后面的Qt错误
- CMFCButton在分层窗口的子对话框中未单击
- Qt - 创建主窗口前的非模态对话框
- 如何将信号从主窗口连接到对话框中的插槽
- 窗口对话框未打开
- 窗口/对话框过程可以在名称空间中吗
- Qt更改窗口内容/常规Qt窗口/对话框
- 如何使用activex控件在窗口/对话框中呈现html文件
- 一个基于c++窗口对话框的程序如何获取系统的一个状态
- 添加水平滚动条来调整窗口对话框的大小
- 有关所需窗口对话框资源类型的帮助