自己派生的Dialog奇怪的构造函数

横云断岭
博客专家认证
2010-08-01 01:31:59
这个构造函数有点奇怪?
在构造函数里再new一个自身,这个递归了?

.h


#ifndef MYDIALOG_H
#define MYDIALOG_H

#include <QDialog>

namespace Ui {
class MyDialog;
}

class MyDialog : public QDialog
{
Q_OBJECT

public:
explicit MyDialog(QWidget *parent = 0);
~MyDialog();

private:
Ui::MyDialog *ui;
};

#endif // MYDIALOG_H




cpp


#include "mydialog.h"
#include "ui_mydialog.h"

MyDialog::MyDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::MyDialog)
{
ui->setupUi(this);
}

MyDialog::~MyDialog()
{
delete ui;
}


...全文
99 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ilovevc709 2010-08-02
  • 打赏
  • 举报
回复
根本没有递归。
UI::MyDialog和MyDialog是不同的两个类。
楼上的解释是正解。
QT的UIC会根据ui文件生成一个对应的类,通常是UI:类名。
lefttime 2010-08-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hengyunabc 的回复:]

原来还有这个文件。。。
不过为什么要这样派生,再搞个指针???

ui_mydialog.h

C/C++ code

/********************************************************************************
** Form generated from reading UI file 'mydialog.ui……
[/Quote]

这是为了解析Ui文件并进行元对象的封装~``
横云断岭 2010-08-01
  • 打赏
  • 举报
回复
原来还有这个文件。。。
不过为什么要这样派生,再搞个指针???

ui_mydialog.h


/********************************************************************************
** Form generated from reading UI file 'mydialog.ui'
**
** Created: Sat Jul 31 22:58:32 2010
** by: Qt User Interface Compiler version 4.6.3
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_MYDIALOG_H
#define UI_MYDIALOG_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QDialog>
#include <QtGui/QHeaderView>

QT_BEGIN_NAMESPACE

class Ui_MyDialog
{
public:

void setupUi(QDialog *MyDialog)
{
if (MyDialog->objectName().isEmpty())
MyDialog->setObjectName(QString::fromUtf8("MyDialog"));
MyDialog->resize(400, 300);

retranslateUi(MyDialog);

QMetaObject::connectSlotsByName(MyDialog);
} // setupUi

void retranslateUi(QDialog *MyDialog)
{
MyDialog->setWindowTitle(QApplication::translate("MyDialog", "MyDialog", 0, QApplication::UnicodeUTF8));
} // retranslateUi

};

namespace Ui {
class MyDialog: public Ui_MyDialog {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_MYDIALOG_H


chenzhp 2010-08-01
  • 打赏
  • 举报
回复
你觉得递归了?
pywepe 2010-08-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hengyunabc 的回复:]

C/C++ code



#include "mydialog.h"
#include "ui_mydialog.h"

MyDialog::MyDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::MyDialog)
{
ui->setupUi(this);
}

MyDialog::~MyDialog()
{
……
[/Quote]

运行情况是什么?
横云断岭 2010-08-01
  • 打赏
  • 举报
回复



#include "mydialog.h"
#include "ui_mydialog.h"

MyDialog::MyDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::MyDialog)
{
ui->setupUi(this);
}

MyDialog::~MyDialog()
{
delete ui;
}

16,211

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧