我有一個Qt Widgets應用程序,在Qt-Creator中創建和編輯。爲什麼推薦的QDialog實例化是這樣的?
主窗口(MainWindow類)有一個菜單欄,用一個按鈕打開一個小對話框(帶有文本或小部件的設置)。
要創建一個新的「窗口」,我打開Qt-Creator中的「創建新文件」對話框,並選擇Qt設計器窗體類,它創建所需的頁眉,源文件和ui文件(dialogabout.h,dialogabout.cpp ,dialogabout.ui)。
如果我與docs跟着一起,然後我打開了QDialog像這樣:
QDialog * widget = new QDialog;
Ui::DialogAbout about_ui;
about_ui.setupUi(widget);
widget->exec();
這工作,但如果我修改新的對話框的初始化程序的按鈕連接到關閉信號,連接語句(以及其中的任何其他代碼)永遠不會到達。
DialogAbout::DialogAbout(QWidget *parent) :
QDialog(parent),
ui(new Ui::DialogAbout)
{
ui->setupUi(this);
qDebug() << "I'm alive!"; // No output happens
connect(ui->pushButton_close, SIGNAL(clicked(bool)), this, SIGNAL(please_close())); // No signal created on pushbutton click.
}
我懷疑這是因爲我沒有明確地做過widget = new DialogAbout(this)
。如果我用不同的方式實例化新對話框:
DialogAbout * newwindow;
newwindow = new DialogAbout(this);
newwindow->exec();
然後connect語句和qDebug工作。
我的問題是:偏離文檔推薦的創建對話框的方式有哪些缺陷?有沒有辦法使用之前的實例化方法來獲得此功能?
please_close()是一個信號還是一個SLOT? – rflobao