QT QTreeView单击双击事件,获取被单击的整行数据

 
//初始化表头
POSCollect::POSCollect(QWidget *parent, Qt::WFlags flags)
	: QMainWindow(parent, flags)
{
	ui.setupUi(this);
	 model = new QStandardItemModel(0, 5, parent);

	model->setHeaderData(0, Qt::Horizontal, QObject::tr("SOCKET编号"));
	model->setHeaderData(1, Qt::Horizontal, QObject::tr("IP地址"));
	model->setHeaderData(2, Qt::Horizontal, QObject::tr("端口"));
    model->setHeaderData(3, Qt::Horizontal, QObject::tr("源定义"));
	model->setHeaderData(4, Qt::Horizontal, QObject::tr("编号"));
	ui.online_treeView->setRootIsDecorated(false);
	ui.online_treeView->setAlternatingRowColors(true);
	ui.online_treeView->setSortingEnabled(true);
    ui.online_treeView->setModel(model);
    
	connect(ui.online_treeView,SIGNAL(doubleClicked ( const QModelIndex)),this,SLOT(OnlineTreeViewDoubleClick(const QModelIndex)));





}

添加数据

void POSCollect::addOnline( const QString &id,
			 const QString &ip, const QString &port, const QString &mtype,const QString &mid)
{
	model->insertRow(0);
	model->setData(model->index(0, 0), id);
	model->setData(model->index(0, 1), ip);
	model->setData(model->index(0, 2), port);
	model->setData(model->index(0, 3), mtype);
	model->setData(model->index(0, 4), mid);
}


//双击并获取整列的文本数据

 

void POSCollect::OnlineTreeViewDoubleClick(const QModelIndex & index)
{

QAbstractItemModel* m=(QAbstractItemModel*)index.model();
for(int columnIndex = 0; columnIndex < m->columnCount(); columnIndex++)
{
	QModelIndex x=m->index(index.row(),columnIndex);

	QString s= x.data().toString();
	QMessageBox::about(this,s,s);
}
}

就这些代码,NND,花了我一天的时间,最后才在群里请教别人才搞定.巨汗...................

 


 

Qt中,QTreeView是一个用于显示树形数据结构的组件。如果需要重写鼠标单击事件(比如处理左键点击、右键点击等),你可以通过继承`QTreeView`并覆盖其相应的信号槽来实现。具体的步骤如下: 1. 首先,创建一个自定义的视图类,例如`CustomTreeView`,继承自`QTreeView`: ```cpp class CustomTreeView : public QTreeView { Q_OBJECT public: // ... 其他声明和构造函数 ... protected slots: void onItemClicked(const QModelIndex& index); // 新建一个槽函数来处理点击事件 protected: // ... 父类的其他成员变量和方法 ... private: // ... 可能需要添加额外的数据成员和连接信号 ... }; ``` 2. 定义`onItemClicked()`函数,这里是单击事件的实际处理逻辑: ```cpp void CustomTreeView::onItemClicked(const QModelIndex& index) { if (index.isValid()) { emit itemClicked(index); // 如果item有效,发送自定义信号,以便外部可以接收到这个事件 // 这里可以添加对选中项的具体操作,如打开详细信息、编辑、删除等 } } ``` 3. 接下来,在构建UI时使用自定义的`CustomTreeView`: ```cpp CustomTreeView* customTreeView = new CustomTreeView; // 连接槽到实际的处理函数 connect(customTreeView, &CustomTreeView::itemClicked, this, [this](const QModelIndex& index) { handleItemClick(index); }); // 设置其他属性,如模型、样式等... void YourClass::handleItemClick(const QModelIndex& index) { // 根据index处理单击事件 // ... } ``` 4. 当用户在QTreeView上点击时,`handleItemClick()`会被调用,你可以在这里编写对应的行为。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值