我有一个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