ViewHeader::ViewHeader( QAbstractItemView* parent ) : QHeaderView( Qt::Horizontal, parent ) , m_parent( parent ) , m_menu( new QMenu( this ) ) , m_sigmap( new QSignalMapper( this ) ) , m_init( false ) { m_menu->setFont( TomahawkUtils::systemFont() ); #if QT_VERSION >= QT_VERSION_CHECK( 5, 0, 0 ) setSectionResizeMode( QHeaderView::Interactive ); setSectionsMovable( true ); #else setResizeMode( QHeaderView::Interactive ); setMovable( true ); #endif setMinimumSectionSize( 60 ); setDefaultAlignment( Qt::AlignLeft ); setStretchLastSection( true ); // m_menu->addAction( tr( "Resize columns to fit window" ), this, SLOT( onToggleResizeColumns() ) ); // m_menu->addSeparator(); connect( m_sigmap, SIGNAL( mapped( int ) ), SLOT( toggleVisibility( int ) ) ); }
CustomHeader(QWidget *parent = 0):QHeaderView(Qt::Horizontal, parent){ for(int i = 0; i < MAX_COLUMN_COUNT; i++){ headerSections.insert(i,new HeaderObject(this)); headerSections[i]->hide(); } //setFont(QFont("Helvetica [Cronyx]", 32)); //setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); setMinimumSectionSize(headerSections[0]->minimumSizeHint().width()); setDefaultSectionSize(headerSections[0]->minimumSizeHint().width()); }
int QHeaderView::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QAbstractItemView::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { if (_id < 21) qt_static_metacall(this, _c, _id, _a); _id -= 21; } #ifndef QT_NO_PROPERTIES else if (_c == QMetaObject::ReadProperty) { void *_v = _a[0]; switch (_id) { case 0: *reinterpret_cast< bool*>(_v) = isSortIndicatorShown(); break; case 1: *reinterpret_cast< bool*>(_v) = highlightSections(); break; case 2: *reinterpret_cast< bool*>(_v) = stretchLastSection(); break; case 3: *reinterpret_cast< bool*>(_v) = cascadingSectionResizes(); break; case 4: *reinterpret_cast< int*>(_v) = defaultSectionSize(); break; case 5: *reinterpret_cast< int*>(_v) = minimumSectionSize(); break; case 6: *reinterpret_cast< Qt::Alignment*>(_v) = defaultAlignment(); break; } _id -= 7; } else if (_c == QMetaObject::WriteProperty) { void *_v = _a[0]; switch (_id) { case 0: setSortIndicatorShown(*reinterpret_cast< bool*>(_v)); break; case 1: setHighlightSections(*reinterpret_cast< bool*>(_v)); break; case 2: setStretchLastSection(*reinterpret_cast< bool*>(_v)); break; case 3: setCascadingSectionResizes(*reinterpret_cast< bool*>(_v)); break; case 4: setDefaultSectionSize(*reinterpret_cast< int*>(_v)); break; case 5: setMinimumSectionSize(*reinterpret_cast< int*>(_v)); break; case 6: setDefaultAlignment(*reinterpret_cast< Qt::Alignment*>(_v)); break; } _id -= 7; } else if (_c == QMetaObject::ResetProperty) { _id -= 7; } else if (_c == QMetaObject::QueryPropertyDesignable) { _id -= 7; } else if (_c == QMetaObject::QueryPropertyScriptable) { _id -= 7; } else if (_c == QMetaObject::QueryPropertyStored) { _id -= 7; } else if (_c == QMetaObject::QueryPropertyEditable) { _id -= 7; } else if (_c == QMetaObject::QueryPropertyUser) { _id -= 7; } #endif // QT_NO_PROPERTIES return _id; }
HeaderView::HeaderView(QAbstractItemView* parent) : QHeaderView(Qt::Horizontal, parent) , m_parent(parent) , m_menu(0) { #if QT_VERSION >= 0x050000 setSectionsMovable(true); #else setMovable(true); #endif setStretchLastSection(true); setDefaultAlignment(Qt::AlignLeft); setMinimumSectionSize(60); }
void WTrackTableViewHeader::setModel(QAbstractItemModel* model) { TrackModel* oldTrackModel = getTrackModel(); if (dynamic_cast<QAbstractItemModel*>(oldTrackModel) == model) { // If the models are the same, do nothing but the redundant call. QHeaderView::setModel(model); return; } // Won't happen in practice since the WTrackTableView new's a new // WTrackTableViewHeader each time a new TrackModel is loaded. // if (oldTrackModel) { // saveHeaderState(); // } // First clear all the context menu actions for the old model. clearActions(); // Now set the header view to show the new model QHeaderView::setModel(model); // Now build actions for the new TrackModel TrackModel* trackModel = dynamic_cast<TrackModel*>(model); if (!trackModel) { return; } // Restore saved header state to get sizes, column positioning, etc. back. restoreHeaderState(); // Here we can override values to prevent restoring corrupt values from database setMovable(true); // Setting true in the next line causes Bug #925619 at least with Qt 4.6.1 setCascadingSectionResizes(false); setMinimumSectionSize(WTTVH_MINIMUM_SECTION_SIZE); int columns = model->columnCount(); for (int i = 0; i < columns; ++i) { if (trackModel->isColumnInternal(i)) { continue; } QString title = model->headerData(i, orientation()).toString(); QAction* action = new QAction(title, &m_menu); action->setCheckable(true); /* If Mixxx starts the first time or the header states have been cleared * due to database schema evolution we gonna hide all columns that may * contain a potential large number of NULL values. Here we uncheck * item in the context menu that are hidden by defualt (e.g., key * column) */ if (!hasPersistedHeaderState() && trackModel->isColumnHiddenByDefault(i)) { action->setChecked(false); } else { action->setChecked(!isSectionHidden(i)); } // Map this action's signals via our QSignalMapper m_signalMapper.setMapping(action, i); m_columnActions.insert(i, action); connect(action, SIGNAL(triggered()), &m_signalMapper, SLOT(map())); m_menu.addAction(action); // force the section size to be a least WTTVH_MINIMUM_SECTION_SIZE if (sectionSize(i) < WTTVH_MINIMUM_SECTION_SIZE) { // This might happen if WTTVH_MINIMUM_SECTION_SIZ has changed or // the header state from database was corrupt resizeSection(i,WTTVH_MINIMUM_SECTION_SIZE); } } // Safety check against someone getting stuck with all columns hidden // (produces an empty library table). Just re-show them all. if (hiddenCount() == columns) { for (int i = 0; i < columns; ++i) { showSection(i); } } }