ListingTable::ListingTable(PartCategory* partCat, Filter* filter, QWidget* parent) : QTableView(parent), partCat(partCat), model(new PartTableModel(partCat, filter, this)), ignoreSectionResize(false) { setModel(model); QHeaderView* hheader = horizontalHeader(); verticalHeader()->hide(); hheader->setStretchLastSection(true); hheader->setCascadingSectionResizes(false); hheader->setMovable(true); setSelectionBehavior(SelectRows); setDragEnabled(true); setDragDropMode(DragOnly); setAutoScroll(true); setSortingEnabled(true); sortByColumn(0, Qt::AscendingOrder); setContextMenuPolicy(Qt::CustomContextMenu); hheader->setContextMenuPolicy(Qt::CustomContextMenu); connect(this, SIGNAL(doubleClicked(const QModelIndex&)), this, SLOT(partActivatedSlot(const QModelIndex&))); connect(this, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(contextMenuRequested(const QPoint&))); connect(hheader, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(headerContextMenuRequested(const QPoint&))); System* sys = System::getInstance(); EditStack* editStack = sys->getEditStack(); connect(qApp, SIGNAL(aboutToQuit()), this, SLOT(aboutToQuit())); connect(partCat, SIGNAL(recordEdited(unsigned int, PartCategory::DataMap)), this, SLOT(updateData())); connect(partCat, SIGNAL(recordCreated(unsigned int, PartCategory::DataMap)), this, SLOT(updateData())); connect(partCat, SIGNAL(recordsRemoved(QList<unsigned int>)), this, SLOT(updateData())); connect(editStack, SIGNAL(undone(EditCommand*)), this, SLOT(updateData())); connect(editStack, SIGNAL(redone(EditCommand*)), this, SLOT(updateData())); connect(selectionModel(), SIGNAL(currentRowChanged(const QModelIndex&, const QModelIndex&)), this, SLOT(currentChanged(const QModelIndex&, const QModelIndex&))); connect(selectionModel(), SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)), this, SLOT(selectionChangedSlot(const QItemSelection&, const QItemSelection&))); connect(model, SIGNAL(updateRequested()), this, SLOT(updateData())); QSettings s; s.beginGroup(QString("gui_geometry_%1").arg(partCat->getTableName())); if (!s.contains("lt_state") || !restoreState(s.value("lt_state").toByteArray())) { unsigned initialTotalWidth = 1000; int nc = model->columnCount(); for (unsigned int i = 0 ; i < nc-1 ; i++) { setColumnWidth(i, initialTotalWidth / nc); } } s.endGroup(); }