loginwindow.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #ifndef LOGINWIDGET_H
  2. #define LOGINWIDGET_H
  3. #include <QScopedPointer>
  4. #include <QWidget>
  5. #include <QScopedPointer>
  6. #include <QWidget>
  7. class LoginWidgetPrivate;
  8. class LoginWidget : public QWidget
  9. {
  10. Q_OBJECT
  11. public:
  12. enum LayoutMode { LeftForm, RightForm, CenterForm };
  13. struct Config
  14. {
  15. bool showSocialButtons = false;
  16. bool allowFormCustomization = false;
  17. QString initialLanguage = "en_US";
  18. bool darkModeByDefault = false;
  19. };
  20. explicit LoginWidget(QWidget *parent = nullptr);
  21. ~LoginWidget();
  22. // 配置管理
  23. void setConfig(const Config &config);
  24. Config config() const;
  25. // 表单自定义接口
  26. void setCustomFormWidget(QWidget *widget);
  27. QWidget *takeCustomFormWidget();
  28. QWidget *formWidget() const;
  29. signals:
  30. void loginRequested(const QString &username, const QString &password);
  31. void wechatLoginRequested();
  32. void githubLoginRequested();
  33. protected:
  34. void resizeEvent(QResizeEvent *event) override;
  35. void changeEvent(QEvent *event) override;
  36. void showEvent(QShowEvent *event) override;
  37. private:
  38. QScopedPointer<LoginWidgetPrivate> d_ptr;
  39. Q_DECLARE_PRIVATE(LoginWidget)
  40. Q_DISABLE_COPY(LoginWidget)
  41. };
  42. #endif // LOGINWIDGET_H