我有两个表格,一个是trainee_view.ui 和其他是enter_new_trainee.ui
所以为此我有trainee_view.cpp,trainee_view.h查看DB中的实习生列表 和enter_new_trainee.cpp,enter_new_trainee.h进入新的实习生细节
现在在trainee_view.ui我有一个按钮" ADD Trainee" 所以,如果我点击这个按钮,它将转到" enter_new_trainee.ui"
void trainee_view::on_pushButton_2_clicked()
{
newtrainee=new enter_new_trainee(this);
newtrainee->setWindowFlags(Qt::Window);
newtrainee->show();
// connect(newtrainee, SIGNAL(destroyed()), this, SLOT(refresh_form()));
}
所以通过使用connect()我尝试在输入新的实习生详细信息后刷新trainee_view。那我怎么能发出信号呢? 第二种形式到第一种形式,以便我在第一种形式中调用refresh_form()方法。 我试图在newtrainee上使用destroyed()信号,但无法刷新我的trainee_view表单。
要简单。我只是想让一个对象被破坏或者不被破坏,所以如果被破坏我可以调用refresh()方法来加载对widget进行的更改 因为我选择了connect()方法所以我应该如何调用它。如果我打电话,becoz connect(newtrainee,SIGNAL(destroyed()),this,SLOT(refresh_form())); 没有任何影响,即没有任何东西加载到视图中。
我是qt的新手所以请尽量帮助我。 谢谢你。
答案 0 :(得分:0)
我不确定我是否正确理解了您的应用,但我认为您误解了信号和插槽的概念。 Look here for some examples。在一些简化中,您可以通过这种方式查看信号和插槽:connect()
命令是一个不会做任何事情的地方 - 它只是停留并继续监听信号。所以你应该把它放在trainee_view.cpp
中。这是第一部分,我看到你做的正确,或几乎正确。但是你还需要一些能够发送信号的东西,这正是emit()
命令所做的 - 它应该在生成新条目的描述之后放在enter_new_trainee.cpp
中。例如,假设用户在UI中的LineEdit中输入新条目:
[...]
QString newEntry = ui->LineEdit->text(); //Save entry to variable
emit(newEntry); //Emit it to signal slot
[...]