0

我在 QWizard 中使用了一组 QWizardPage 类。除此之外,我有一个登录对话框,它获取信息并从数据库中读取。然后将此数据库信息存储在我创建的结构中。

如果可以的话,我想避免紧耦合和全局数据(以及相应的单例),因为我想尝试以最好的方式执行任务。

现在首先我目前在应用程序初始化期间创建向导,并使用信号/插槽将结构发送到向导。这当然意味着当我创建登录表单时向导必须存在。我想的另一种方法是向向导添加公共函数或更新构造函数。但这意味着我需要在创建向导页面时将数据传递到向导页面。有没有更好的方法来做到这一点,也许沿着这个问题的相关部分:

另一件事是我在向导期间的某些阶段从数据库中读取信息。如果您使用registerField()它似乎是一种不错的方法,但是我从数据库中读取的信息并未存储在小部件中,因此我看不到如何从其他页面访问这些数据。有没有办法做到这一点?

非常感谢

4

2 回答 2

1

将 GUI 与应用程序的业务逻辑分开是一个好主意。您可以添加一个控制器类来处理对数据库的请求,然后更新 GUI。

于 2012-06-19T14:28:56.187 回答
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
}
于 2012-06-29T09:05:31.213 回答