QT将参数传递给QDialog要求

时间:2016-10-08 11:32:03

标签: c++ qt constructor qdialog

请注意:这里有一个c ++ qt新手,要温柔

我发现了一个非常有用的post关于向QDialog发送信息的问题,但我对自己的实施感到担忧。

假设有一个自定义QDialog = LoginStatusDialog 假设需要通过其构造函数将QString username, password传递给LoginStatusDialog,如loginstatusdialog.h

所示
class LoginStatusDialog : public QDialog
{
    Q_OBJECT

public:
//    explicit LoginStatusDialog(QWidget *parent = 0);   <<< --- ORIGINAL constuctor before adding parameters
    explicit LoginStatusDialog(QWidget *parent = 0, const QString &_login = NULL, const QString &_key = NULL);
...

private:
    Ui::LoginStatusDialog *ui;
    QString login, key;
};

在这里,我需要实现上述帖子缺少的2个更改:

1. `const` : I am required to define the parameter as a constant

2. `= NULL` : I am required to add a default value

为什么这两个都需要,帖子缺少这些,或者他们只是被忽略了?

1 个答案:

答案 0 :(得分:0)

首先,你需要改变你的构造函数:

LoginStatusDialog(const QString &_login, const QString &_key, QWidget *parent = 0);

使用此功能可以避免为参数添加默认值。此外,您不需要将构造函数声明为explicit。只有只有一个参数的构造函数才能避免隐式类型转换。

其次,const QString &表示您通过引用向方法发送值。这样就可以避免额外的数据复制。您不需要这样做。您可以像QString login一样声明参数,但这样做不是一个好习惯。有关详细信息,请参阅this article