From d834eba65c2c65c1540d13c9c39ced51bd87cf83 Mon Sep 17 00:00:00 2001 From: Dennis Brentjes Date: Fri, 18 Apr 2014 18:30:52 +0200 Subject: First working prototype --- main.cpp | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) (limited to 'main.cpp') diff --git a/main.cpp b/main.cpp index fc047f7..1ca2350 100644 --- a/main.cpp +++ b/main.cpp @@ -1,5 +1,80 @@ +#include "fusion_model.hpp" +#include "qt_adapter.hpp" +#include "gui_item_delegate.hpp" + +#include + +#include + +#include +#include + +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> { + + 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(model.get_cell(row, column)) << "\t"; + } else { + std::cout << boost::any_cast(model.get_cell(row, column)) << "\t"; + } + } + std::cout << std::endl; + } + return 0; } -- cgit v1.2.3-70-g09d2