2010-10-14 2 views
7

klickt. Ich verwende Qtableview mit QsqlTableModel zum Auffüllen von Tabellendaten. Ich möchte die Spalte anhand der Benutzerauswahl in der Spaltenüberschrift sortieren.Qt Qtableview empfängt kein Signal für Header-Element, das auf

Ich versuchte, die in QTableView sorting signal? erwähnte Art und Weise das Signals für das Erhalten (den horizontalen Kopf von QTableView erhalten und verbindet Signal sectionclicked (int logischen Index). Aber das gleiche Signal wird nicht ausgegeben wird, wenn ich auf Spaltenüberschrift klicken.

finden Sie den Code, wo die Verbindung erfolgt:

Mitglied Variable:

QHeaderView *m_horiz_header; 

CPP-Datei

m_sqltablemodel->setTable(tabel_name); 
m_sqltablemodel->setEditStrategy(QSqlTableModel::OnManualSubmit); 
m_sqltablemodel->select(); 

m_horiz_header= m_table_view->horizontalHeader(); 
connect(m_horiz_header, SIGNAL(sectionClicked (int logicalIndex)), 
    this, SLOT(on_sectionClicked (int logicalIndex))); 

Slot-Funktion für die Sortierung:

void class::on_sectionClicked (int logicalIndex) 
{ 
    m_horiz_header->setSortIndicator(logicalIndex, Qt::AscendingOrder); 
    m_table_view->sortByColumn(logicalIndex); 
} 

Diese Funktion wird nicht aufgerufen zu werden, wenn Spaltenkopf angeklickt wird.

Können Sie mir bitte helfen, wie ich das mache, wo ich falsch gelaufen bin?

Vielen Dank im Voraus.

+0

Verwandte Themen: http://stackoverflow.com/questions/24714130/qt-5-3-qtreeview-clickable-header-data – neuronet

Antwort

7

Ich habe den Grund, warum die Signalverbindung fehlgeschlagen ist.

Argumentname sollte nicht auf connect erwähnt werden.

connect(m_horiz_header, SIGNAL(sectionClicked(int)), this, SLOT(on_sectionClicked(int))); 

durch Ändern der obigen Code wie folgt, es funktionierte.