QTfrontend/AbstractPage.h
changeset 6101 5a4ea2c7b9df
parent 6052 5e3e7d19bdb5
equal deleted inserted replaced
5801:531f64292489 6101:5a4ea2c7b9df
    43 class QAction;
    43 class QAction;
    44 class QDataWidgetMapper;
    44 class QDataWidgetMapper;
    45 class QAbstractItemModel;
    45 class QAbstractItemModel;
    46 class QSettings;
    46 class QSettings;
    47 class QSlider;
    47 class QSlider;
       
    48 class QGridlayout;
    48 
    49 
    49 class AbstractPage : public QWidget
    50 class AbstractPage : public QWidget
    50 {
    51 {
    51     Q_OBJECT
    52     Q_OBJECT
    52 
    53 
    53  public:
    54     signals:
       
    55         void goBack();
    54 
    56 
    55  protected:
    57     protected:
    56   AbstractPage(QWidget* parent = 0) {
    58         // constructor and virtual destructor
    57     Q_UNUSED(parent);
    59         AbstractPage(QWidget * parent = 0);
    58 
    60 
    59     font14 = new QFont("MS Shell Dlg", 14);
    61         // call this in the constructor of your subclass
    60     //setFocusPolicy(Qt::StrongFocus);
    62         void initPage();
    61   }
       
    62   virtual ~AbstractPage() {};
       
    63 
    63 
    64   QPushButton* addButton(QString btname, QGridLayout* grid, int wy, int wx, bool iconed = false) {
    64         // the following methods are used during page construction
    65     QPushButton* butt = new QPushButton(this);
       
    66     if (!iconed) {
       
    67       butt->setFont(*font14);
       
    68       butt->setText(btname);
       
    69       //butt->setStyleSheet("background-color: #0d0544");
       
    70     } else {
       
    71       const QIcon& lp=QIcon(btname);
       
    72       QSize sz = lp.actualSize(QSize(65535, 65535));
       
    73       butt->setIcon(lp);
       
    74       butt->setFixedSize(sz);
       
    75       butt->setIconSize(sz);
       
    76       butt->setFlat(true);
       
    77       butt->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
       
    78     }
       
    79     grid->addWidget(butt, wy, wx);
       
    80     return butt;
       
    81   };
       
    82 
    65 
    83   QPushButton* addButton(QString btname, QGridLayout* grid, int wy, int wx, int rowSpan, int columnSpan, bool iconed = false) {
    66             // you MUST implement this method in your subclass
    84     QPushButton* butt = new QPushButton(this);
    67             // only define layout, not behavior in here
    85     if (!iconed) {
    68             virtual QLayout * bodyLayoutDefinition() = 0;
    86       butt->setFont(*font14);
       
    87       butt->setText(btname);
       
    88     } else {
       
    89       const QIcon& lp=QIcon(btname);
       
    90       QSize sz = lp.actualSize(QSize(65535, 65535));
       
    91       butt->setIcon(lp);
       
    92       butt->setFixedSize(sz);
       
    93       butt->setIconSize(sz);
       
    94       butt->setFlat(true);
       
    95       butt->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
       
    96     }
       
    97     grid->addWidget(butt, wy, wx, rowSpan, columnSpan);
       
    98     return butt;
       
    99   };
       
   100 
    69 
   101   QPushButton* addButton(QString btname, QBoxLayout* box, int where, bool iconed = false) {
    70             // you CAN implement this method in your subclass
   102     QPushButton* butt = new QPushButton(this);
    71             virtual QLayout * footerLayoutDefinition() { return NULL; };
   103     if (!iconed) {
       
   104       butt->setFont(*font14);
       
   105       butt->setText(btname);
       
   106     } else {
       
   107       const QIcon& lp=QIcon(btname);
       
   108       QSize sz = lp.actualSize(QSize(65535, 65535));
       
   109       butt->setIcon(lp);
       
   110       butt->setFixedSize(sz);
       
   111       butt->setIconSize(sz);
       
   112       butt->setFlat(true);
       
   113       butt->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
       
   114     }
       
   115     box->addWidget(butt, where);
       
   116     return butt;
       
   117   };
       
   118 
    72 
   119   QFont * font14;
    73             // you CAN but most likely want to implement this method in your subclass
       
    74             // keep in mind not to expose twidgets as public!
       
    75             // instead define a signal with a meaningful name and connect the widget
       
    76             // signals to your page signals
       
    77             virtual void connectSignals() {};
       
    78 
       
    79         virtual ~AbstractPage() {};
       
    80 
       
    81         QPushButton * formattedButton(const QString & btname, bool hasIcon = false);
       
    82         QPushButton * addButton(const QString & btname, QGridLayout * grid, int wy, int wx, bool hasIcon = false);
       
    83         QPushButton * addButton(const QString & btname, QGridLayout * grid, int wy, int wx, int rowSpan, int columnSpan, bool hasIcon = false);
       
    84         QPushButton * addButton(const QString & btname, QBoxLayout * box, int where, bool hasIcon = false);
       
    85 
       
    86         void setBackButtonVisible(bool visible = true);
       
    87 
       
    88         QFont * font14;
       
    89 
       
    90     private:
       
    91 
       
    92         QPushButton * btnBack;
   120 };
    93 };
   121 
    94 
   122 #endif
    95 #endif
   123 
    96