diff options
| author | Dennis Brentjes <d.brentjes@gmail.com> | 2014-04-18 18:30:52 +0200 |
|---|---|---|
| committer | Dennis Brentjes <d.brentjes@gmail.com> | 2014-04-18 18:30:52 +0200 |
| commit | d834eba65c2c65c1540d13c9c39ced51bd87cf83 (patch) | |
| tree | 68c0533b668545cbfb0b0d556ac7ebf9bf8d3e97 /main.cpp | |
| parent | 0969e7a24c0ae2a0cc9c5bd4be0d18c29bfe7f30 (diff) | |
| download | generic-gui-d834eba65c2c65c1540d13c9c39ced51bd87cf83.tar.gz generic-gui-d834eba65c2c65c1540d13c9c39ced51bd87cf83.tar.bz2 generic-gui-d834eba65c2c65c1540d13c9c39ced51bd87cf83.zip | |
First working prototype
Diffstat (limited to 'main.cpp')
| -rw-r--r-- | main.cpp | 75 |
1 files changed, 75 insertions, 0 deletions
@@ -1,5 +1,80 @@ +#include "fusion_model.hpp" +#include "qt_adapter.hpp" +#include "gui_item_delegate.hpp" + +#include <boost/fusion/adapted.hpp> + +#include <iostream> + +#include <QMainWindow> +#include <QApplication> + +struct Data { + std::string name; + uint32_t number; + float ratio; + bool lolwut; +}; + +BOOST_FUSION_ADAPT_STRUCT( + Data, + (std::string, name) + (uint32_t, number) + (float, ratio) + (bool, lolwut) +) + +struct DataModel : public fusion_model<std::vector<Data>> { + + void add_data(Data d) { + data.push_back(d); + } +}; + int main() { + DataModel model; + + model.add_data({"Pietje", 2, 3.333f, true}); + model.add_data({"Jantje", 3, 1.5f, false}); + model.add_data({"Sjaakje", 1, 0.1337f, false}); + + auto adapter = make_qt_adapter(model); + + int argc = 0; + QApplication qapp(argc, nullptr); + + QMainWindow w; + + decltype(adapter)::element_type::view view; + + view.setModel(adapter.get()); + + GuiItemDelegate delegate; + view.setItemDelegate(&delegate); + + view.show(); + + qapp.exec(); + + for(int column = 0; column < model.column_count(); ++column) + { + std::cout << model.horizontal_header_data(column) << "\t"; + } + std::cout << std::endl; + + for(int row = 0; row < model.row_count(); ++row) + { + for(int column = 0; column < model.column_count(); ++column) { + if(column == 0) { + std::cout << boost::any_cast<std::string>(model.get_cell(row, column)) << "\t"; + } else { + std::cout << boost::any_cast<uint32_t>(model.get_cell(row, column)) << "\t"; + } + } + std::cout << std::endl; + } + return 0; } |
