将参数传递给QDialog要求
QT Passing parameter to QDialog requirements
请注意:一个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
一样声明参数,但这样做不是一个好的做法。更多信息请参考本文
相关文章:
- 为什么控制台要求输入,即使代码中没有输入
- 为什么 std::optional::operator=(U&&) 要求你是非标量类型?
- 我试图制作一个程序,要求用户输入问题和答案,但程序循环不正确
- 我希望改进或要求我目前的延迟/睡眠方法。C++
- C++/autoconf 等效于文档库要求.txt的要求是什么?
- 输入数据成员未按要求工作
- 编写一个不断要求用户输入的程序
- 如果仍然不满足要求,如何使 if 语句重复?
- 我要求用户输入大小和数组,但是当我打印矢量时,它仅显示'0'作为输出
- 这个SSDO演示的GLSL版本要求是自我冲突的吗
- 以十为基数的数字到布尔数组,该数组要求二进制/基数为 2 的数字
- 自定义对话框(源自QDialog)不会关闭(Android)
- C++20理念:要求表达和完美转发
- G++ 发出警告,要求删除一个代码的数组,但不删除另一个代码的数组
- 要求用户输入C++输出文件名
- MyType 允许 std::atomic 的确切要求是什么<MyType>?
- 如何要求 macports 用英特尔编译器包装 openmpi?
- BOOST_DATA_TEST_CASE总是要求样品的可打印性吗?
- C++概念中的类型要求 (C++20)
- 将参数传递给QDialog要求