2016-07-14 2 views
0

シグナル(下のコード)を見て、QTableWidgetセルのクリックを検出する方法をご覧ください。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

あなたは方法horizontalHeaderであなたQTableWidgetためQHeaderViewを得ることができます。 QHeaderViewには信号sectionClickedがあります。これを使用して、ヘッダ項目のテキストを決定することができます。

関連する問題