2016-10-08 71 views
0

请注意:一个C++ QT新手在这里,是温柔QT参数传递给QDialog的要求

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

说一个具有自定义QDialog = LoginStatusDialog 说一个人需要通过其构造函数传递QString username, passwordLoginStatusDialog如由我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实施2度的变化是,提到后缺乏:

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

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

为什么这些都是必需的,邮政缺乏这些或他们只是被忽略为给定?所有的

回答

0

首先,你需要改变你的构造是这样的:

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

有了这个,你避免添加默认值,为您的参数。你也不需要声明构造函数为explicit。它只会让只有一个参数的构造函数避免隐式类型转换。

二,const QString &表示您将值发送给方法参考。这样可以避免额外的数据复制。你不需要这样做。你可以像QString login一样声明参数,但这样做不是一个好习惯。欲了解更多信息,请参阅this article