0
在Qt中,我有一個帶插槽的類,名爲on_pushButton_2_clicked(),在這個函數中,我想實例化另一個類,Login
,並在其UI元素上運行setupUi
。C++和Qt,我如何運行構造函數或創建對象的不同函數來設置Ui?
目前,這是我有:
在WelcomeScreen.cpp
void WelcomeScreen::on_pushButton_2_clicked()
{
Login login(this);
login.init();
}
和Login.cpp
void Login::init(){
ui->setupUi(this);
QPalette wPal(palette());
wPal.setColor(QPalette::Background,Qt::white);
ui->success->setAutoFillBackground(true);
ui->success->setPalette(wPal);
ui->success->hide();
ui->failure->setAutoFillBackground(true);
ui->failure->setPalette(wPal);
ui->failure->hide();
}
這編譯並運行良好,但它不按下按鈕加載登錄用戶界面。這,確實加載UI:
在WelcomeScreen.cpp
void WelcomeScreen::on_pushButton_2_clicked()
{
Ui::Login login_ui;
login_ui.setupUi(this);
}
但是,它不運行Login
構造或者其任何職能,所以我不能初始化它像我想。
理想情況下,我想簡單地實例化Login
對象並讓它運行構造函數,從而設置Ui並運行所有初始化。
而且,這裏的Login
構造函數(它基本上是默認的構造函數)
Login::Login(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Login)
{
init();
}
這沒有奏效......所以,如果它在函數的末尾被銷燬,使用顯式構造函數'new Login(this)'會阻止它關閉?它似乎仍然在做同樣的事情......另外,你爲什麼包含'WA_DeleteOnClose'? – JVE999
@ JVE999你的'Login'類是什麼類?是否應該在自己的窗口中(即對話框)?我使用'Qt :: WA_DeleteOnClose'的原因是因爲我假設它是一個對話框。所以我想在關閉它的時候刪除它,所以我不會讓這些對象中的很多亂七八糟,因爲它們沒有被刪除,而且每次按下按鈕時都會創建一個新對象。 – thuga
@ JVE999我看到它是一個主窗口。嘗試調用'login-> show();'。 – thuga