请注意:这里有一个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
为什么这两个都需要,帖子缺少这些,或者他们只是被忽略了?
答案 0 :(得分:0)
首先,你需要改变你的构造函数:
LoginStatusDialog(const QString &_login, const QString &_key, QWidget *parent = 0);
使用此功能可以避免为参数添加默认值。此外,您不需要将构造函数声明为explicit
。只有只有一个参数的构造函数才能避免隐式类型转换。
其次,const QString &
表示您通过引用向方法发送值。这样就可以避免额外的数据复制。您不需要这样做。您可以像QString login
一样声明参数,但这样做不是一个好习惯。有关详细信息,请参阅this article。