检测点击并获取QTableWidget标题的文本,如何?

时间:2016-07-14 11:54:04

标签: c++ qt qt5 qtablewidget qtablewidgetitem

我看了如何通过观察QTableWidget信号(下面的代码)来检测cellClicked(int row, int column)单元格中的点击。

我想对水平标题的单元格执行相同的操作,并获取单击的标题单元格的文本。我该怎么做?

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您可以使用方法QHeaderViewddply获取horizontalHeaderplyr有信号sectionClicked。您可以使用它来确定标题项的文本。