如何用c++代码从QTableWidget控件获取当前正在聚焦的单元格,请给出代码实例
时间: 2024-12-17 12:37:41 浏览: 4
在Qt中,你可以通过`QWidget::focusInEvent()`和`QWidget::focusOutEvent()`这两个信号连接到槽函数来跟踪QTableWidget的焦点变化。下面是一个简单的C++代码示例,展示了如何在QTableWidget上获取当前聚焦的单元格:
```cpp
#include <QApplication>
#include <QTableView>
#include <QDebug>
class MyTableCellHandler : public QObject
{
public slots:
void handleFocusChange(QTableWidgetItem *currentItem) {
qDebug() << "Current focused cell: ";
if (currentItem) {
qDebug() << "Row: " << currentItem->row()
<< ", Column: " << currentItem->column();
} else {
qDebug() << "No cell is focused";
}
}
private:
QTableView *tableView;
};
int main(int argc, char **argv) {
QApplication app(argc, argv);
// 创建一个QTableWidget
QTableWidget tableWidget(5, 5);
MyTableCellHandler handler;
// 将槽函数handleFocusChange绑定到QTableWidget的focusIn和focusOut事件
connect(&tableWidget, &QTableWidget::focusInEvent, &handler, &MyTableCellHandler::handleFocusChange);
connect(&tableWidget, &QTableWidget::focusOutEvent, &handler, &MyTableCellHandler::handleFocusChange);
tableWidget.show();
return app.exec();
}
```
在这个例子中,当你在`tableWidget`上点击或按Tab键切换时,控制台会打印出当前聚焦的单元格的行号和列号。如果没有单元格聚焦,则会显示"No cell is focused"。
阅读全文