将参数传递给QDialog要求

QT Passing parameter to QDialog requirements

本文关键字:要求 QDialog 参数传递      更新时间:2023-10-16

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

我发现了一篇关于向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实现2个变化,上述帖子缺乏:

1. `const` : I am required to define the parameter as a constant
2. `= NULL` : I am required to add a default value

为什么这两个都是必需的,而职位缺乏这些,或者它们只是被忽略了?

首先你需要像这样改变你的构造函数:

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

这样可以避免在参数中添加默认值。此外,您不需要将构造函数声明为explicit。只有对于只有一个参数的构造函数才有意义,以避免隐式类型转换。

第二,const QString &意味着你通过引用向方法发送值。这样可以避免额外的数据拷贝。你不需要这样做。您可以像QString login一样声明参数,但这样做不是一个好的做法。更多信息请参考本文