2017-09-05 15 views
0

開關我有兩種形式之一是trainee_view.ui 等是enter_new_trainee.ui如何重新加載本UI細節一次不同於在UI QT C++

所以,我有trainee_view.cpp,trainee_view。 H鍵查看培訓生的名單在DB 和enter_new_trainee.cpp,enter_new_trainee.h進入新學員細節

現在trainee_view.ui我有一個按鈕「添加見習」 所以,如果我點擊這個按鈕,它會去「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上使用destroy()信號,但無法刷新我的trainee_view表單。

要簡單。我只想得到一個對象被銷燬或不是如此,如果銷燬我可以調用refresh()方法來加載修改完成的部件 爲我選擇connect()方法,所以我應該怎麼稱呼它。如果我打電話給 connect(newtrainee,SIGNAL(destroyed()),this,SLOT(refresh_form())); 沒有效果,即沒有加載到視圖中。

是新手到qt所以請儘量幫助我。 謝謝你。

+0

強烈建議使用[mcve]。 – m7913d

回答

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 
[...] 
+0

解決了一個問題,即如果我點擊「關閉」按鈕發出一個信號停止(),並以主要形式爲該信號分配一個時隙。現在的問題是,如果我們點擊窗口小部件右上角的「X」關閉按鈕,問題仍然存在。我該如何處理。 ?我試圖在重寫的closeEvents()方法中發出相同的信號 – vinay

相關問題