Qt 如何设计QWidget?
QWidget类的成员通常应该如何设计为私有还是公共Qt 如何设计QWidget?,qt,private,public,qwidget,Qt,Private,Public,Qwidget,QWidget类的成员通常应该如何设计为私有还是公共 class MyWidget : public QWidget { public: MyWidget( QWidget *parent = 0); QLineEdit *myLine; } 或 我更喜欢私有成员的第二个定义,但是这个版本不适合测试,因为我无法使用findChild(QString)访问该成员 另一部分是QWidget类是否应该嵌套其他小部件?问题是不能直接访问嵌套的小部件,这对于自动gui
class MyWidget : public QWidget {
public:
MyWidget( QWidget *parent = 0);
QLineEdit *myLine;
}
或
我更喜欢私有成员的第二个定义,但是这个版本不适合测试,因为我无法使用findChild(QString)访问该成员
另一部分是QWidget类是否应该嵌套其他小部件?问题是不能直接访问嵌套的小部件,这对于自动gui测试来说并没有真正的用处,在自动gui测试中,鼠标点击应该会按下按钮或其他东西 第二种选择通常被认为是“最佳编程实践”,如果您需要通过其他地方(包括您的测试套件)的代码访问私有成员,那么您需要实现getter和setter 通常,测试框架也应该使用API来访问对象,而不是直接访问成员,因为您通常希望在单元测试中测试API。如果你不能放弃测试框架应该直接访问私有成员的概念,那么你可以使用C++好友类来研究。但你没听我这么说 如果您需要以一般方式访问某些内容(如通过字符串名称),这正是我们为您设计的功能。因此,将您的项声明为属性,并以这种方式列出getter/setter/signals/等
旁白:不幸的是,实现getter和setter有些枯燥,这就是为什么我最终实现了一个实现getter、setter并创建信号定义和发出信号的函数。如果将来确实需要执行更复杂的操作,只需删除并用更复杂的定义替换自动getter/setter。是什么阻止您向该类添加成员函数,例如
QLineEdit*MyWidget::getLineEdit()const
?我为什么要在这个解决方案中使用private修饰符?可能是#定义私有公共也很好吗?#定义私有公共
?这是个玩笑吗?
class MyWidget : public QWidget {
public:
MyWidget( QWidget *parent = 0);
private:
QLineEdit *myLine;
}