Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 如何在两个窗口之间通信?_Qt_Qt5 - Fatal编程技术网

Qt 如何在两个窗口之间通信?

Qt 如何在两个窗口之间通信?,qt,qt5,Qt,Qt5,我是新来的。在Ubuntu 15.04上使用基于Qt5.4.1的QtCreator 3.1.1 我正在尝试构建一个应用程序,该应用程序在主屏幕上列出员工,右侧有添加、编辑、删除和导出按钮。单击“添加”和“编辑”按钮,打开另一个子窗口并执行相应的操作 一旦用户从子窗口添加/编辑/删除员工,我想刷新主窗口上的员工列表 我不想在一个文件中编写完整的代码,这样就可以根据屏幕来分隔代码。但我不知道如何从子窗口访问父窗口UI元素。所以我使用下面的子文件代码实现了这一点 QTableWidget *table

我是新来的。在Ubuntu 15.04上使用基于Qt5.4.1的QtCreator 3.1.1

我正在尝试构建一个应用程序,该应用程序在主屏幕上列出员工,右侧有添加、编辑、删除和导出按钮。单击“添加”和“编辑”按钮,打开另一个子窗口并执行相应的操作

一旦用户从子窗口添加/编辑/删除员工,我想刷新主窗口上的员工列表

我不想在一个文件中编写完整的代码,这样就可以根据屏幕来分隔代码。但我不知道如何从子窗口访问父窗口UI元素。所以我使用下面的子文件代码实现了这一点

QTableWidget *tableWidget   = this->parent()->findChild<QTableWidget *>();
QSqlQuery query;
    query.exec("SELECT * FROM employees order by id DESC");

    tableWidget->setRowCount( 0 );
    tableWidget->setRowCount( query.size() );
    tableWidget->setColumnWidth( 0, 60 );
    tableWidget->setColumnWidth( 1, 200 );
    tableWidget->setColumnWidth( 2, 150 );
    tableWidget->setColumnWidth( 3, 100 );

    while( query.next() ) {

        tableWidget->setItem( columnCount, 0 ,new QTableWidgetItem( query.value(0).toString() ) );
        tableWidget->setItem( columnCount, 1 ,new QTableWidgetItem( query.value(1).toString() ) );
        tableWidget->setItem( columnCount, 2 ,new QTableWidgetItem( query.value(2).toString() ) );
        tableWidget->setItem( columnCount, 3 ,new QTableWidgetItem( query.value(3).toString() ) );

        columnCount++;
    }
QTableWidget*tableWidget=this->parent()->findChild();
QSqlQuery查询;
query.exec(“按id描述从员工订单中选择*);
tableWidget->setRowCount(0);
tableWidget->setRowCount(query.size());
tableWidget->setColumnWidth(0,60);
tableWidget->setColumnWidth(1200);
tableWidget->setColumnWidth(2150);
tableWidget->setColumnWidth(3100);
while(query.next()){
tableWidget->setItem(columnCount,0,新的QTableWidgetItem(query.value(0.toString()));
tableWidget->setItem(columnCount,1,新的QTableWidgetItem(query.value(1.toString()));
tableWidget->setItem(columnCount,2,新的QTableWidgetItem(query.value(2.toString());
tableWidget->setItem(columnCount,3,新的QTableWidgetItem(query.value(3.toString());
columnCount++;
}


这是实现此功能的正确方法吗?请引导我。谢谢

您的辅助窗口可以发出一个信号,您可以将该信号连接到主窗口中的一个插槽,该插槽执行您在主窗口中的代码


或者,如果这些附加窗口是模式对话框(在打开时阻止用户与主窗口交互),则在它们从
exec()返回后触发更新
调用

您的辅助窗口可以发出一个信号,您可以将该信号连接到主窗口中的某个插槽,该插槽执行您在主窗口中的代码


或者,如果这些附加窗口是模式对话框(在打开时阻止用户与主窗口交互),则在它们从
exec()返回后触发更新
调用

与任何两个对象之间的通信方式相同-使用Qt的信号和插槽机制。与任何两个对象之间的通信方式相同-使用Qt的信号和插槽机制。