diff options
| author | Dennis Brentjes <d.brentjes@gmail.com> | 2014-05-30 22:15:28 +0200 |
|---|---|---|
| committer | Dennis Brentjes <d.brentjes@gmail.com> | 2014-05-30 22:15:28 +0200 |
| commit | a1737ecbd0aaea0aa8ce34557663cf0b4cdb8910 (patch) | |
| tree | d8a9cbc97462889f8b8d72bbcb23f13d3c7bd663 /form.hpp | |
| parent | 79af684323abfa10abfc31003ab47fd89a03d625 (diff) | |
| download | generic-gui-a1737ecbd0aaea0aa8ce34557663cf0b4cdb8910.tar.gz generic-gui-a1737ecbd0aaea0aa8ce34557663cf0b4cdb8910.tar.bz2 generic-gui-a1737ecbd0aaea0aa8ce34557663cf0b4cdb8910.zip | |
Unified and simplified the widget creation api.
Diffstat (limited to 'form.hpp')
| -rw-r--r-- | form.hpp | 27 |
1 files changed, 8 insertions, 19 deletions
@@ -144,7 +144,7 @@ private slots: //This base is required because an QObject may not be templated and Form is a class template. //Slots can be virtual however. -class QtFormBase : public QObject +class QtFormBase : public QMdiArea { Q_OBJECT @@ -159,12 +159,12 @@ template <typename T> struct Form : public QtFormBase, public FusionModelObserver { std::shared_ptr<T> model; - QMdiArea* area; QVBoxLayout* layout; QFormLayout* form_layout; QHBoxLayout* button_layout; QPushButton* prev; QLineEdit* jump_edit; + QLabel* label; QPushButton* next; std::vector<std::shared_ptr<FormUpdateHandler>> updatehandlers; std::map<int, QLineEdit*> line_edits; @@ -173,12 +173,12 @@ struct Form : public QtFormBase, public FusionModelObserver { Form(std::shared_ptr<T> model) : model(model) - , area(new QMdiArea()) , layout(new QVBoxLayout()) , form_layout(new QFormLayout()) , button_layout(new QHBoxLayout()) , prev(new QPushButton("&Previous")) , jump_edit(new QLineEdit()) + , label(new QLabel()) , next(new QPushButton("&Next")) , updatehandlers() , line_edits() @@ -196,18 +196,20 @@ struct Form : public QtFormBase, public FusionModelObserver { layout->addLayout(form_layout); layout->addLayout(button_layout); + label->setText("/" + QString::number(model->row_count())); + label->setMaximumWidth(100); + button_layout->addWidget(prev); button_layout->addWidget(jump_edit); + button_layout->addWidget(label); button_layout->addWidget(next); button_layout->setAlignment(Qt::AlignHCenter); - area->setLayout(layout); + setLayout(layout); setup_gui(); fill_data(); - area->updateGeometry(); - set_button_state(); connect( prev, SIGNAL(clicked()), @@ -310,17 +312,4 @@ struct Form : public QtFormBase, public FusionModelObserver { int i = clamp_index(current_index + 1); set_current_index(i); } - - QWidget* get_widget() - { - return area; - } }; - -template <typename Model> -std::shared_ptr<Form<Model>> make_form(std::shared_ptr<Model> model) -{ - auto ret = std::make_shared<Form<Model>>(model); - model->add_observer(ret); - return ret; -} |
