One minute to late
Here is the complete code:
AddressBook.h
class AddressBook
: public QDialog,
public Ui
::AddressBook{
Q_OBJECT
public:
AddressBook
(DataManager
* dmgr,
QWidget *parent
= 0);
~AddressBook();
private:
DataManager* data;
};
#endif
class AddressBook : public QDialog, public Ui::AddressBook
{
Q_OBJECT
public:
AddressBook(DataManager* dmgr, QWidget *parent = 0);
~AddressBook();
private:
DataManager* data;
};
#endif
To copy to clipboard, switch view to plain text mode
AddressBook.cpp
AddressBook
::AddressBook(DataManager
* dmgr,
QWidget *parent
): QDialog(parent
){
Q_ASSERT(dmgr);
data = dmgr;
Q_ASSERT(data);
setupUi(this);
connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
tableView = dmgr->customerTableView(this);
Q_ASSERT(tableView);
}
AddressBook::~AddressBook()
{
data->DeleteCustomerTableView();
}
AddressBook::AddressBook(DataManager* dmgr, QWidget *parent): QDialog(parent)
{
Q_ASSERT(dmgr);
data = dmgr;
Q_ASSERT(data);
setupUi(this);
connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
tableView = dmgr->customerTableView(this);
Q_ASSERT(tableView);
}
AddressBook::~AddressBook()
{
data->DeleteCustomerTableView();
}
To copy to clipboard, switch view to plain text mode
DataManager.h
class DataManager
{
public:
DataManager();
private:
void setupModels();
void setupTableViews();
};
class DataManager
{
public:
DataManager();
QStandardItemModel *customerModel();
QStandardItemModel *articlesModel();
QStandardItemModel *invoicesModel();
QStandardItemModel *invoiceEntriesModel();
QTableView *customerTableView(QWidget *parent = 0);
QTableView *articlesTableView(QWidget *parent = 0);
QTableView *invoicesTableView(QWidget* parent = 0);
QTableView *invoiceEntriesTableView(QWidget* parent = 0);
QTableView *DeleteCustomerTableView();
QTableView *DeleteArticlesTableView();
QTableView *DeleteInvoicesTableView();
QTableView *DeleteInvoiceEntriesTableView();
private:
QStandardItemModel *model_customer;
QStandardItemModel *model_articles;
QStandardItemModel *model_invoices;
QStandardItemModel *model_invoiceEntries;
QTableView *m_customerTableView;
QTableView *m_articlesTableView;
QTableView *m_invoicesTableView;
QTableView *m_invoiceEntriesTableView;
QItemSelectionModel *selectionModelCustomer;
QItemSelectionModel *selectionModelArticles;
QItemSelectionModel *selectionModelInvoices;
QItemSelectionModel *selectionModelInvoiceEntries;
QHeaderView *headerViewCustomer;
QHeaderView *headerViewArticles;
QHeaderView *headerViewInvoices;
QHeaderView *headerViewInvoiceEntries;
void setupModels();
void setupTableViews();
};
To copy to clipboard, switch view to plain text mode
DataManager.cpp
DataManager::DataManager()
{
out << "DataManager()\n";
setupModels();
setupTableViews(); //set QTableViews to NULL
}
void DataManager::setupModels()
{
out << "setupModels()\n";
model_customer->setObjectName("Customers");
model_articles->setObjectName("Articles");
model_invoices->setObjectName("Invoices");
model_invoiceEntries->setObjectName("InvoiceEntries");
}
void DataManager::setupTableViews()
{
out << "setupTableViews()\n";
//set to NULL, else the delete later will crash the app
m_customerTableView = NULL;
m_articlesTableView = NULL;
m_invoicesTableView = NULL;
m_invoiceEntriesTableView = NULL;
}
{
Q_ASSERT(model_customer);
return model_customer;
}
{
Q_ASSERT(model_articles);
return model_articles;
}
{
Q_ASSERT(model_invoices);
return model_invoices;
}
{
Q_ASSERT(model_invoiceEntries);
return model_invoiceEntries;
}
{
DeleteCustomerTableView();
m_customerTableView->setModel(model_customer);
m_customerTableView
->setGeometry
(QRect(10,
10,
700,
400));
m_customerTableView->setObjectName("CustomerTableView");;
m_customerTableView->setSortingEnabled(true);
m_customerTableView->sortByColumn(0, Qt::DescendingOrder);
m_customerTableView->setSelectionModel(selectionModelCustomer);
headerViewCustomer = m_customerTableView->horizontalHeader();
return m_customerTableView;
}
{
DeleteArticlesTableView();
m_articlesTableView->setModel(model_articles);
m_articlesTableView
->setGeometry
(QRect(10,
10,
700,
400));
m_articlesTableView->setObjectName("ArticlesTableView");;
m_articlesTableView->setSortingEnabled(true);
m_articlesTableView->sortByColumn(0, Qt::DescendingOrder);
m_articlesTableView->setSelectionModel(selectionModelArticles);
headerViewArticles = m_articlesTableView->horizontalHeader();
return m_articlesTableView;
}
{
DeleteInvoicesTableView();
m_invoicesTableView->setModel(model_invoices);
m_invoicesTableView
->setGeometry
(QRect(10,
10,
700,
400));
m_invoicesTableView->setObjectName("ArticlesTableView");;
m_invoicesTableView->setSortingEnabled(true);
m_invoicesTableView->sortByColumn(0, Qt::DescendingOrder);
m_invoicesTableView->setSelectionModel(selectionModelInvoices);
headerViewInvoices = m_invoicesTableView->horizontalHeader();
return m_invoicesTableView;
}
{
DeleteInvoiceEntriesTableView();
m_invoiceEntriesTableView
= new QTableView(parent
);
m_invoiceEntriesTableView->setModel(model_invoiceEntries);
m_invoiceEntriesTableView
->setGeometry
(QRect(10,
10,
700,
400));
m_invoiceEntriesTableView->setObjectName("ArticlesTableView");;
m_invoiceEntriesTableView->setSortingEnabled(true);
m_invoiceEntriesTableView->sortByColumn(0, Qt::DescendingOrder);
m_invoiceEntriesTableView->setSelectionModel(selectionModelInvoiceEntries);
headerViewInvoices = m_invoiceEntriesTableView->horizontalHeader();
return m_invoiceEntriesTableView;
}
//suggestion from forum, to avoid leaks
QTableView *DataManager
::DeleteCustomerTableView() {
delete m_customerTableView;
m_customerTableView = NULL;
return m_customerTableView;
}
QTableView *DataManager
::DeleteArticlesTableView() {
delete m_articlesTableView;
m_articlesTableView = NULL;
return m_articlesTableView;
}
QTableView *DataManager
::DeleteInvoicesTableView() {
delete m_invoicesTableView;
m_invoicesTableView = NULL;
return m_invoicesTableView;
}
QTableView *DataManager
::DeleteInvoiceEntriesTableView() {
delete m_invoiceEntriesTableView;
m_invoiceEntriesTableView = NULL;
return m_invoiceEntriesTableView;
}
DataManager::DataManager()
{
QTextStream out(stdout);
out << "DataManager()\n";
setupModels();
setupTableViews(); //set QTableViews to NULL
}
void DataManager::setupModels()
{
QTextStream out(stdout);
out << "setupModels()\n";
model_customer = new QStandardItemModel;
model_customer->setObjectName("Customers");
model_articles = new QStandardItemModel;
model_articles->setObjectName("Articles");
model_invoices = new QStandardItemModel;
model_invoices->setObjectName("Invoices");
model_invoiceEntries = new QStandardItemModel;
model_invoiceEntries->setObjectName("InvoiceEntries");
}
void DataManager::setupTableViews()
{
QTextStream out(stdout);
out << "setupTableViews()\n";
//set to NULL, else the delete later will crash the app
m_customerTableView = NULL;
m_articlesTableView = NULL;
m_invoicesTableView = NULL;
m_invoiceEntriesTableView = NULL;
}
QStandardItemModel *DataManager::customerModel()
{
Q_ASSERT(model_customer);
return model_customer;
}
QStandardItemModel *DataManager::articlesModel()
{
Q_ASSERT(model_articles);
return model_articles;
}
QStandardItemModel *DataManager::invoicesModel()
{
Q_ASSERT(model_invoices);
return model_invoices;
}
QStandardItemModel *DataManager::invoiceEntriesModel()
{
Q_ASSERT(model_invoiceEntries);
return model_invoiceEntries;
}
QTableView *DataManager::customerTableView(QWidget* parent)
{
DeleteCustomerTableView();
m_customerTableView = new QTableView(parent);
m_customerTableView->setModel(model_customer);
m_customerTableView->setGeometry(QRect(10, 10, 700, 400));
m_customerTableView->setObjectName("CustomerTableView");;
m_customerTableView->setSortingEnabled(true);
m_customerTableView->sortByColumn(0, Qt::DescendingOrder);
m_customerTableView->setSelectionMode(QAbstractItemView::SingleSelection);
m_customerTableView->setSelectionBehavior(QAbstractItemView::SelectRows);
selectionModelCustomer = new QItemSelectionModel(model_customer);
m_customerTableView->setSelectionModel(selectionModelCustomer);
headerViewCustomer = m_customerTableView->horizontalHeader();
return m_customerTableView;
}
QTableView *DataManager::articlesTableView(QWidget* parent)
{
DeleteArticlesTableView();
m_articlesTableView = new QTableView(parent);
m_articlesTableView->setModel(model_articles);
m_articlesTableView->setGeometry(QRect(10, 10, 700, 400));
m_articlesTableView->setObjectName("ArticlesTableView");;
m_articlesTableView->setSortingEnabled(true);
m_articlesTableView->sortByColumn(0, Qt::DescendingOrder);
m_articlesTableView->setSelectionMode(QAbstractItemView::SingleSelection);
m_articlesTableView->setSelectionBehavior(QAbstractItemView::SelectRows);
selectionModelArticles = new QItemSelectionModel(model_articles);
m_articlesTableView->setSelectionModel(selectionModelArticles);
headerViewArticles = m_articlesTableView->horizontalHeader();
return m_articlesTableView;
}
QTableView *DataManager::invoicesTableView(QWidget* parent)
{
DeleteInvoicesTableView();
m_invoicesTableView = new QTableView(parent);
m_invoicesTableView->setModel(model_invoices);
m_invoicesTableView->setGeometry(QRect(10, 10, 700, 400));
m_invoicesTableView->setObjectName("ArticlesTableView");;
m_invoicesTableView->setSortingEnabled(true);
m_invoicesTableView->sortByColumn(0, Qt::DescendingOrder);
m_invoicesTableView->setSelectionMode(QAbstractItemView::SingleSelection);
m_invoicesTableView->setSelectionBehavior(QAbstractItemView::SelectRows);
selectionModelInvoices = new QItemSelectionModel(model_invoices);
m_invoicesTableView->setSelectionModel(selectionModelInvoices);
headerViewInvoices = m_invoicesTableView->horizontalHeader();
return m_invoicesTableView;
}
QTableView *DataManager::invoiceEntriesTableView(QWidget* parent)
{
DeleteInvoiceEntriesTableView();
m_invoiceEntriesTableView = new QTableView(parent);
m_invoiceEntriesTableView->setModel(model_invoiceEntries);
m_invoiceEntriesTableView->setGeometry(QRect(10, 10, 700, 400));
m_invoiceEntriesTableView->setObjectName("ArticlesTableView");;
m_invoiceEntriesTableView->setSortingEnabled(true);
m_invoiceEntriesTableView->sortByColumn(0, Qt::DescendingOrder);
m_invoiceEntriesTableView->setSelectionMode(QAbstractItemView::SingleSelection);
m_invoiceEntriesTableView->setSelectionBehavior(QAbstractItemView::SelectRows);
selectionModelInvoiceEntries = new QItemSelectionModel(model_invoiceEntries);
m_invoiceEntriesTableView->setSelectionModel(selectionModelInvoiceEntries);
headerViewInvoices = m_invoiceEntriesTableView->horizontalHeader();
return m_invoiceEntriesTableView;
}
//suggestion from forum, to avoid leaks
QTableView *DataManager::DeleteCustomerTableView()
{
delete m_customerTableView;
m_customerTableView = NULL;
return m_customerTableView;
}
QTableView *DataManager::DeleteArticlesTableView()
{
delete m_articlesTableView;
m_articlesTableView = NULL;
return m_articlesTableView;
}
QTableView *DataManager::DeleteInvoicesTableView()
{
delete m_invoicesTableView;
m_invoicesTableView = NULL;
return m_invoicesTableView;
}
QTableView *DataManager::DeleteInvoiceEntriesTableView()
{
delete m_invoiceEntriesTableView;
m_invoiceEntriesTableView = NULL;
return m_invoiceEntriesTableView;
}
To copy to clipboard, switch view to plain text mode
Bookmarks