diff --git a/src/ExtendedTableWidget.cpp b/src/ExtendedTableWidget.cpp index 36bd532a..5b99c904 100644 --- a/src/ExtendedTableWidget.cpp +++ b/src/ExtendedTableWidget.cpp @@ -482,7 +482,7 @@ void ExtendedTableWidget::copyMimeData(const QModelIndexList& fromIndices, QMime htmlResult.append(""); int firstColumn = indices.front().column(); for(int i = firstColumn; i <= indices.back().column(); i++) { - QByteArray headerText = model()->headerData(i, Qt::Horizontal, Qt::DisplayRole).toByteArray(); + QByteArray headerText = model()->headerData(i, Qt::Horizontal, Qt::EditRole).toByteArray(); if (i != firstColumn) { result.append(fieldSepText); htmlResult.append(""); diff --git a/src/PlotDock.cpp b/src/PlotDock.cpp index edb36f1b..6f5912ff 100644 --- a/src/PlotDock.cpp +++ b/src/PlotDock.cpp @@ -193,7 +193,7 @@ void PlotDock::updatePlot(SqliteTableModel* model, BrowseDataTableSettings* sett // in the PlotColumnType, both using the User Role. columnitem->setData(PlotColumnField, Qt::UserRole, i); columnitem->setData(PlotColumnType, Qt::UserRole, static_cast(columntype)); - columnitem->setText(PlotColumnField, model->headerData(i, Qt::Horizontal).toString()); + columnitem->setText(PlotColumnField, model->headerData(i, Qt::Horizontal, Qt::EditRole).toString()); // restore previous check state if(mapItemsY.contains(columnitem->text(PlotColumnField))) @@ -435,7 +435,7 @@ void PlotDock::updatePlot(SqliteTableModel* model, BrowseDataTableSettings* sett if(column == RowNumId) yAxisLabels << tr("Row #"); else - yAxisLabels << model->headerData(column, Qt::Horizontal).toString(); + yAxisLabels << model->headerData(column, Qt::Horizontal, Qt::EditRole).toString(); } } @@ -448,7 +448,7 @@ void PlotDock::updatePlot(SqliteTableModel* model, BrowseDataTableSettings* sett if(x == RowNumId) ui->plotWidget->xAxis->setLabel(tr("Row #")); else - ui->plotWidget->xAxis->setLabel(model->headerData(x, Qt::Horizontal).toString()); + ui->plotWidget->xAxis->setLabel(model->headerData(x, Qt::Horizontal, Qt::EditRole).toString()); ui->plotWidget->yAxis->setLabel(yAxisLabels.join("|")); } diff --git a/src/sqlitetablemodel.cpp b/src/sqlitetablemodel.cpp index a98bc857..b3d33dc8 100644 --- a/src/sqlitetablemodel.cpp +++ b/src/sqlitetablemodel.cpp @@ -243,24 +243,30 @@ static QString toSuperScript(T number) QVariant SqliteTableModel::headerData(int section, Qt::Orientation orientation, int role) const { - if (role != Qt::DisplayRole) + if (role != Qt::DisplayRole && role != Qt::EditRole) return QVariant(); if (orientation == Qt::Horizontal) { // if we have a VIRTUAL table the model will not be valid, with no header data if(static_cast(section) < m_headers.size()) { - QString sortIndicator; - for(size_t i = 0; i < m_query.orderBy().size(); i++) { - const sqlb::SortedColumn sortedColumn = m_query.orderBy()[i]; - // Append sort indicator with direction and ordinal number in superscript style - if (sortedColumn.column == static_cast(section)) { - sortIndicator = sortedColumn.direction == sqlb::Ascending ? " ▾" : " ▴"; - sortIndicator.append(toSuperScript(i+1)); - break; + const QString plainHeader = QString::fromStdString(m_headers.at(static_cast(section))); + // In the edit role, return a plain column name, but in the display role, add the sort indicator. + if (role == Qt::EditRole) + return plainHeader; + else { + QString sortIndicator; + for(size_t i = 0; i < m_query.orderBy().size(); i++) { + const sqlb::SortedColumn sortedColumn = m_query.orderBy()[i]; + // Append sort indicator with direction and ordinal number in superscript style + if (sortedColumn.column == static_cast(section)) { + sortIndicator = sortedColumn.direction == sqlb::Ascending ? " ▾" : " ▴"; + sortIndicator.append(toSuperScript(i+1)); + break; + } } + return plainHeader + sortIndicator; } - return QString::fromStdString(m_headers.at(static_cast(section))) + sortIndicator; } return QString("%1").arg(section + 1); } @@ -538,7 +544,7 @@ Qt::ItemFlags SqliteTableModel::flags(const QModelIndex& index) const if(m_query.selectedColumns().size()) { if(index.column() > 0) - custom_display_format = QString::fromStdString(m_query.selectedColumns().at(static_cast(index.column())-1).selector) != sqlb::escapeIdentifier(headerData(index.column(), Qt::Horizontal).toString()); + custom_display_format = QString::fromStdString(m_query.selectedColumns().at(static_cast(index.column())-1).selector) != sqlb::escapeIdentifier(headerData(index.column(), Qt::Horizontal, Qt::EditRole).toString()); } if(!isBinary(index) && !custom_display_format)