在Qt中,如果你使用QTreeView
,可以通过QModelIndex
获取被点击项的名称。以下是一个简要的示例,展示如何实现这一点:
示例代码
cpp
#include <QApplication>
#include <QTreeView>
#include <QStandardItemModel>
#include <QDebug>
class MyTreeView : public QTreeView {
Q_OBJECT
public:
MyTreeView(QWidget *parent = nullptr) : QTreeView(parent) {
// 创建模型并添加数据
QStandardItemModel *model = new QStandardItemModel(this);
setModel(model);
// 添加一些示例项
QStandardItem *parentItem = model->invisibleRootItem();
parentItem->appendRow(new QStandardItem("Item 1"));
parentItem->appendRow(new QStandardItem("Item 2"));
parentItem->appendRow(new QStandardItem("Item 3"));
// 连接信号和槽
connect(this, &QTreeView::clicked, this, &MyTreeView::onItemClicked);
}
public slots:
void onItemClicked(const QModelIndex &index) {
if (!index.isValid()) return; // 确保索引有效
QString itemName = index.data(Qt::DisplayRole).toString();
qDebug() << "Clicked item name:" << itemName;
}
};
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
MyTreeView treeView;
treeView.setWindowTitle("QTreeView Example");
treeView.resize(400, 300);
treeView.show();
return a.exec();
}
#include "main.moc"
cpp
说明
- QTreeView:这是用于显示树形结构的视图。
- QStandardItemModel:这是一个简单的模型,供
QTreeView
使用。 - clicked信号:我们连接了
QTreeView
的clicked
信号到一个槽函数onItemClicked
,在该函数中获取被点击项的名称。 - index.data(Qt::DisplayRole):通过模型索引获取显示角色的数据,这是你所需的项名称。
运行代码
编译并运行上述代码。点击QTreeView
中的项,将在控制台输出所点击的项的名称。如果需要进一步的解释或其他问题,随时告诉我!