2016-07-14 13 views
0

Я вижу, как обнаружить щелчок в ячейке QTableWidget, наблюдая за сигналом cellClicked(int row, int column) (код ниже).Обнаружить щелчок и получить текст заголовка QTableWidget, как?

Я хотел бы сделать то же самое для ячеек горизонтального заголовка и получить текст щелкнутой ячейки заголовка. Как мне это сделать?

// 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!!" ; 
    }); 
} 

ответ

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

Вы можете получить QHeaderView для вас QTableWidget методом horizontalHeader. Есть sectionClicked. Вы можете использовать его для определения текста элемента заголовка.