QModelIndex PlaylistView::NextEditableIndex(const QModelIndex& current) { QList<int> columns = GetEditableColumns(); QHeaderView* h = header(); int index = columns.indexOf(h->visualIndex(current.column())); if (index + 1 >= columns.size()) return model()->index(current.row() + 1, h->logicalIndex(columns.first())); return model()->index(current.row(), h->logicalIndex(columns[index + 1])); }
QModelIndex PlaylistView::PrevEditableIndex(const QModelIndex& current) { QList<int> columns = GetEditableColumns(); QHeaderView* h = header(); int index = columns.indexOf(h->visualIndex(current.column())); if (index - 1 < 0) return model()->index(current.row() - 1, h->logicalIndex(columns.last())); return model()->index(current.row(), h->logicalIndex(columns[index - 1])); }
/*! Sets up the size of the headers. Does not work in the constructor because there is not any data or model */ void AnalysesTableView::resizeHeaders(){ QHeaderView* hHeader = horizontalHeader(); hHeader->setMinimumSectionSize(10); hHeader->resizeSection(hHeader->logicalIndex(0), 30);//Check box hHeader->resizeSection(hHeader->logicalIndex(1), 50);//ID hHeader->resizeSection(hHeader->logicalIndex(2), 50);//Network id hHeader->resizeSection(hHeader->logicalIndex(3), 50);//Archive ID hHeader->resizeSection(hHeader->logicalIndex(4), 80);//Time hHeader->resizeSection(hHeader->logicalIndex(5), 200);//Description hHeader->resizeSection(hHeader->logicalIndex(6), 50);//Parameters hHeader->resizeSection(hHeader->logicalIndex(7), 50);//type hHeader->setDefaultAlignment(Qt::AlignLeft); }
// This is called by rclmain_w prior to exiting void ResTable::saveColState() { if (!m_ismainres) return; QSettings settings; settings.setValue("resTableSplitterSizes", splitter->saveState()); QHeaderView *header = tableView->horizontalHeader(); const vector<string>& vf = m_model->getFields(); if (!header) { LOGERR(("ResTable::saveColState: no table header ??\n")); return; } // Remember the current column order. Walk in visual order and // create new list QStringList newfields; vector<int> newwidths; for (int vi = 0; vi < header->count(); vi++) { int li = header->logicalIndex(vi); if (li < 0 || li >= int(vf.size())) { LOGERR(("saveColState: logical index beyond list size!\n")); continue; } newfields.push_back(QString::fromUtf8(vf[li].c_str())); newwidths.push_back(header->sectionSize(li)); } prefs.restableFields = newfields; prefs.restableColWidths = newwidths; }
/*! Sets up the size of the headers. Does not work in the constructor because there is not any data or model */ void NeuronParametersView::resizeHeaders(){ QHeaderView* hHeader = horizontalHeader(); hHeader->setMinimumSectionSize(10); hHeader->resizeSection(hHeader->logicalIndex(0), 100);//Description QList<ParameterInfo> neuronParams = model->getParameterInfoList(); for(int i=0; i<neuronParams.size(); ++i){ int tmpParamLength = 10+neuronParams.at(i).getName().length() * 10; if(tmpParamLength < 40) tmpParamLength = 40; hHeader->resizeSection(hHeader->logicalIndex(i+1), tmpParamLength);//Parameter name } //Icon hHeader->resizeSection(hHeader->logicalIndex(neuronParams.size() + 1), 50);//Edit button hHeader->setDefaultAlignment(Qt::AlignLeft); }
void showColumnsContextMenu(const QPoint& p, QTreeWidget& tree) { QMenu headerMenu(xi18nc("@title:menu", "Columns")); QHeaderView* header = tree.header(); for (qint32 i = 0; i < tree.model()->columnCount(); i++) { const int idx = header->logicalIndex(i); const QString text = tree.model()->headerData(idx, Qt::Horizontal).toString(); QAction* action = headerMenu.addAction(text); action->setCheckable(true); action->setChecked(!header->isSectionHidden(idx)); action->setData(idx); action->setEnabled(idx > 0); } QAction* action = headerMenu.exec(tree.header()->mapToGlobal(p)); if (action != nullptr) { const bool hidden = !action->isChecked(); tree.setColumnHidden(action->data().toInt(), hidden); if (!hidden) tree.resizeColumnToContents(action->data().toInt()); } }
// the default list mode of QListView handles column widths // very badly (worse than gtk+) and it's not very flexible. // so, let's handle column widths outselves. void FolderViewTreeView::layoutColumns() { // qDebug("layoutColumns"); if(!model()) return; doingLayout_ = true; QHeaderView* headerView = header(); // the width that's available for showing the columns. int availWidth = viewport()->contentsRect().width(); int desiredWidth = 0; // get the width that every column want int numCols = headerView->count(); if(numCols > 0) { int* widths = new int[numCols]; // array to store the widths every column needs int column; for(column = 0; column < numCols; ++column) { int columnId = headerView->logicalIndex(column); // get the size that the column needs widths[column] = sizeHintForColumn(columnId); // compute the total width needed desiredWidth += widths[column]; } int filenameColumn = headerView->visualIndex(FolderModel::ColumnFileName); // if the total witdh we want exceeds the available space if(desiredWidth > availWidth) { // Compute the width available for the filename column int filenameAvailWidth = availWidth - desiredWidth + widths[filenameColumn]; // Compute the minimum acceptable width for the filename column int filenameMinWidth = qMin(200, sizeHintForColumn(filenameColumn)); if (filenameAvailWidth > filenameMinWidth) { // Shrink the filename column to the available width widths[filenameColumn] = filenameAvailWidth; } else { // Set the filename column to its minimum width widths[filenameColumn] = filenameMinWidth; } } else { // Fill the extra available space with the filename column widths[filenameColumn] += availWidth - desiredWidth; } // really do the resizing for every column for(int column = 0; column < numCols; ++column) { headerView->resizeSection(column, widths[column]); } delete []widths; } doingLayout_ = false; if(layoutTimer_) { delete layoutTimer_; layoutTimer_ = nullptr; } }
// the default list mode of QListView handles column widths // very badly (worse than gtk+) and it's not very flexible. // so, let's handle column widths outselves. void FolderViewTreeView::layoutColumns() { // qDebug("layoutColumns"); if(!model()) return; doingLayout_ = true; QHeaderView* headerView = header(); // the width that's available for showing the columns. int availWidth = viewport()->contentsRect().width(); int desiredWidth = 0; // get the width that every column want int numCols = headerView->count(); int* widths = new int[numCols]; // array to store the widths every column needs int column; for(column = 0; column < numCols; ++column) { int columnId = headerView->logicalIndex(column); // get the size that the column needs widths[column] = sizeHintForColumn(columnId); } // the best case is every column can get its full width for(column = 0; column < numCols; ++column) { desiredWidth += widths[column]; } // if the total witdh we want exceeds the available space if(desiredWidth > availWidth) { // we don't have that much space for every column int filenameColumn = headerView->visualIndex(FolderModel::ColumnFileName); // shrink the filename column first desiredWidth -= widths[filenameColumn]; // total width of all other columns // see if setting the width of the filename column to 200 solve the problem if(desiredWidth + 200 > availWidth) { // even when we reduce the width of the filename column to 200, // the available space is not enough. So we give up trying. widths[filenameColumn] = 200; desiredWidth += 200; } else { // we still have more space, so the width of filename column can be increased // expand the filename column to fill all available space. widths[filenameColumn] = availWidth - desiredWidth; desiredWidth = availWidth; } } // really do the resizing for every column for(int column = 0; column < numCols; ++column) { headerView->resizeSection(column, widths[column]); } delete []widths; doingLayout_ = false; if(layoutTimer_) { delete layoutTimer_; layoutTimer_ = NULL; } }
void PoitemTableView::setModel(QAbstractItemModel* model) { QTableView::setModel(model); setColumnWidth(ITEM_NUMBER_COL, _itemColumn); setColumnWidth(WAREHOUS_CODE_COL, 100); //_whsColumn too small setColumnWidth(POITEM_QTY_ORDERED_COL, _qtyColumn); setColumnWidth(POITEM_UNITPRICE_COL, _priceColumn); setColumnWidth(EXTPRICE_COL, _moneyColumn); setColumnWidth(POITEM_FREIGHT_COL, _priceColumn); setColumnWidth(POITEM_DUEDATE_COL, _dateColumn); #ifdef QE_PROJECT setColumnWidth(PRJ_NUMBER_COL, 100); #endif #ifdef QE_NONINVENTORY setColumnWidth(EXPCAT_CODE_COL, 100); #endif setColumnWidth(POITEM_VEND_ITEM_NUMBER_COL, _itemColumn); QHeaderView *header = horizontalHeader(); int dest = 0; header->moveSection(header->visualIndex(ITEM_NUMBER_COL), dest++); header->moveSection(header->visualIndex(WAREHOUS_CODE_COL), dest++); header->moveSection(header->visualIndex(POITEM_VEND_ITEM_NUMBER_COL), dest++); #ifdef QE_NONINVENTORY header->moveSection(header->visualIndex(EXPCAT_CODE_COL), dest++); #endif header->moveSection(header->visualIndex(POITEM_QTY_ORDERED_COL), dest++); header->moveSection(header->visualIndex(POITEM_UNITPRICE_COL), dest++); header->moveSection(header->visualIndex(EXTPRICE_COL), dest++); header->moveSection(header->visualIndex(POITEM_FREIGHT_COL), dest++); header->moveSection(header->visualIndex(POITEM_DUEDATE_COL), dest++); #ifdef QE_PROJECT header->moveSection(header->visualIndex(PRJ_NUMBER_COL), dest++); #endif // if we didn't explicitly place the logical section, hide it for (int i = dest; i < header->count(); i++) header->hideSection(header->logicalIndex(i)); #ifdef QE_PROJECT if (! _metrics->boolean("UseProjects")) header->hideSection(header->visualIndex(PRJ_NUMBER_COL)); #endif //header->setStretchLastSection(true); }
void ScanGallery::restoreHeaderState(const QString &key) { const KConfigGroup grp = KGlobal::config()->group(COLUMN_STATES_GROUP); kDebug() << "from" << key; QString state = grp.readEntry(key, ""); if (!state.isEmpty()) { QHeaderView *hdr = header(); // same workaround as needed in Akregator (even with Qt 4.6), // see r918196 and r1001242 to kdepim/akregator/src/articlelistview.cpp hdr->resizeSection(hdr->logicalIndex(hdr->count()-1), 1); hdr->restoreState(QByteArray::fromBase64(state.toAscii())); } }
void PoitemTableView::setModel(QAbstractItemModel* model) { if (DEBUG) qDebug("PoitemTableView::setModel(%p)", model); QTableView::setModel(model); setColumnWidth(ITEM_NUMBER_COL, _itemColumn); setColumnWidth(WAREHOUS_CODE_COL, 100); //_whsColumn too small setColumnWidth(POITEM_VEND_ITEM_DESCRIP_COL, 200); setColumnWidth(POITEM_QTY_ORDERED_COL, _qtyColumn); setColumnWidth(POITEM_UNITPRICE_COL, _priceColumn); setColumnWidth(EXTPRICE_COL, _moneyColumn); setColumnWidth(POITEM_FREIGHT_COL, _priceColumn); setColumnWidth(POITEM_DUEDATE_COL, _dateColumn); #ifdef QE_NONINVENTORY setColumnWidth(EXPCAT_CODE_COL, 100); #endif setColumnWidth(POITEM_VEND_ITEM_NUMBER_COL, _itemColumn); QHeaderView *header = horizontalHeader(); int dest = 0; header->moveSection(header->visualIndex(ITEM_NUMBER_COL), dest++); if (_metrics->boolean("MultiWhs")) { header->moveSection(header->visualIndex(WAREHOUS_CODE_COL), dest++); } header->moveSection(header->visualIndex(POITEM_VEND_ITEM_NUMBER_COL), dest++); header->moveSection(header->visualIndex(POITEM_VEND_ITEM_DESCRIP_COL), dest++); #ifdef QE_NONINVENTORY header->moveSection(header->visualIndex(EXPCAT_CODE_COL), dest++); #endif header->moveSection(header->visualIndex(POITEM_QTY_ORDERED_COL), dest++); header->moveSection(header->visualIndex(POITEM_UNITPRICE_COL), dest++); header->moveSection(header->visualIndex(EXTPRICE_COL), dest++); header->moveSection(header->visualIndex(POITEM_FREIGHT_COL), dest++); header->moveSection(header->visualIndex(POITEM_DUEDATE_COL), dest++); // if we didn't explicitly place the logical section, hide it for (int i = dest; i < header->count(); i++) header->hideSection(header->logicalIndex(i)); connect(model, SIGNAL(headerDataChanged(Qt::Orientation, int, int)), this, SLOT(sHeaderDataChanged(Qt::Orientation, int, int))); //header->setStretchLastSection(true); if (DEBUG) qDebug("PoitemTableView::setModel returning"); }
void ToitemTableView::setModel(QAbstractItemModel* model) { QTableView::setModel(model); setColumnWidth(ITEM_NUMBER_COL, _itemColumn); setColumnWidth(TOITEM_QTY_ORDERED_COL, _qtyColumn); setColumnWidth(TOITEM_STDCOST_COL, _priceColumn); setColumnWidth(TOITEM_FREIGHT_COL, _priceColumn); setColumnWidth(TOITEM_DUEDATE_COL, _dateColumn); #ifdef QE_PROJECT setColumnWidth(PRJ_NUMBER_COL, 100); #endif QHeaderView *header = horizontalHeader(); int dest = 0; header->moveSection(header->visualIndex(ITEM_NUMBER_COL), dest++); header->moveSection(header->visualIndex(TOITEM_QTY_ORDERED_COL), dest++); header->moveSection(header->visualIndex(TOITEM_STDCOST_COL), dest++); header->moveSection(header->visualIndex(TOITEM_FREIGHT_COL), dest++); header->moveSection(header->visualIndex(TOITEM_DUEDATE_COL), dest++); #ifdef QE_PROJECT header->moveSection(header->visualIndex(PRJ_NUMBER_COL), dest++); #endif // if we didn't explicitly place the logical section, hide it for (int i = dest; i < header->count(); i++) header->hideSection(header->logicalIndex(i)); #ifdef QE_PROJECT if (! _metrics->boolean("UseProjects")) header->hideSection(header->visualIndex(PRJ_NUMBER_COL)); #endif //header->setStretchLastSection(true); }
int HeaderView::logicalIndex(lua_State * L) // ( int visualIndex ) const : int { QHeaderView* obj = QtObject<QHeaderView>::check( L, 1); Util::push( L, obj->logicalIndex( Util::toInt( L, 2) ) ); return 1; }