2016-07-14 16 views
0

Ich sehe, wie man klickt in QTableWidget Zelle durch Beobachten der cellClicked(int row, int column) Signal (Code unten).Detect klicken und Text von QTableWidget Header, wie bekommen?

Ich möchte das gleiche für die Zellen des horizontalen Headers tun und den Text der geklickten Header-Zelle abrufen. Wie mache ich das?

// mainwindow.h 
class MainWindow : public QMainWindow { 
    Q_OBJECT 
    QWidget widget; 
    QVBoxLayout vLayout {&widget}; 
    QStringList headers {"asdca", "asdcad", "asdcadca"}; 
    QTableWidget table {5, headers.size()}; 
public: 
    MainWindow(QWidget *parent = 0); 
    ~MainWindow() {} 
}; 

// mainwindow.cpp 
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { 
    setCentralWidget(&widget); 
    vLayout.addWidget(&table); 
    table.setHorizontalHeaderLabels(headers); 
    connect(&table, &QTableWidget::clicked, []{ 
     qDebug() << "click!!" ; 
    }); 
} 

Antwort

0
QHeaderView *header = qobject_cast<QTableView *>(&table)->horizontalHeader(); 
connect(header, &QHeaderView::sectionClicked, [this](int logicalIndex){ 
    QString text = table.horizontalHeaderItem(logicalIndex)->text(); 
    qDebug() << logicalIndex << text; 
});