我在QWizard中使用了一组QWizardPage类。与此分开,我有一个登录对话框,从数据库中获取信息和读取。然后将此数据库信息存储在我创建的结构中。
我想避免紧耦合和全局数据(以及相应的Singletons),如果我可以尝试以最佳方式执行事情。
现在我首先在应用程序初始化期间创建向导,并使用信号/槽将结构发送到向导。这当然意味着在创建登录表单时必须存在向导。我想的另一种方法是向向导添加公共函数或更新构造函数。但那意味着我需要在创建数据时将数据传递到向导页面。有没有更好的方法来做到这一点,可能与这个问题的相关部分有关:
另一件事是我在向导的某些阶段从数据库中读取信息。如果你使用registerField()
这似乎是一个很好的方法,但我从数据库中读取的信息没有存储在一个小部件中,所以我看不到如何从其他页面访问这些数据。有没有办法做到这一点?
非常感谢
答案 0 :(得分:1)
将GUI与应用程序的业务逻辑分开是个好主意。 您可以添加一个控制器类,它将处理对数据库的请求,然后更新GUI。
答案 1 :(得分:1)
可能有更好的方法可以做到这一点,但我知道的是我可以在我的代码中创建属性,然后使用registerField
来对付这些属性。这里的例子非常简单,但通过这样做,我可以注册我需要的任何东西。我想如果你开始有更复杂的属性而不是“正常”类型,那么它可能会变得更复杂。
Q_PROPERTY(int settingID READ getSettingID)
public:
int getSettingID() const;
然后在代码中:
registerField("test_setting", this, "settingID");
int TestSettingsWizardPage::getSettingID() const
{
// Return the value here
}