QT qtablewidget用法

本文介绍了一个使用Qt框架中的tableWidget组件实现动态表格显示的例子。该示例展示了如何设置表格列数、定义表头标签、调整列宽,并通过信号槽机制响应用户的交互行为。此外,还介绍了根据不同视图更新表格内容的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ui.tableWidget-> setColumnCount(1);
QStringList heard;
heard<<"X0_Y0-X1_Y1";
ui.tableWidget-> setHorizontalHeaderLabels ( heard );

ui.tableWidget->resizeColumnsToContents();//设置宽度随字长变化


connect(ui.tableWidget, SIGNAL(itemPressed(QTableWidgetItem *)),this, SLOT(OnTableRightBtn(QTableWidgetItem * )));//设置按键按下信号槽


connect(ui.tableWidget, SIGNAL(itemSelectionChanged()),this, SLOT(OnTableSelectChanged()));//


void CTabTwo::UpdateData()
{
ui.tableWidget->clear();//先清除


if (m_nCurrentView == 1)
{
QStringList heard;
heard<<"X0_Y0-X1_Y1";
ui.tableWidget-> setHorizontalHeaderLabels ( heard );


//再重新添加,添加0_1
for (int i = 0; i < ui.label_1->m_listCenter.size(); i++)
{
QString str = QString("X0=%1,Y0=%2,X1=%3,Y1=%4").arg(ui.label_1->m_listCenter.at(i).x()).arg(ui.label_1->m_listCenter.at(i).y()).arg(ui.label_2->m_listCenter.at(i).x()).arg(ui.label_2->m_listCenter.at(i).y());


ui.tableWidget->insertRow(i);
QTableWidgetItem *item = new QTableWidgetItem(str);
ui.tableWidget->setItem(i, 0, item );
}
}
else if (m_nCurrentView ==2)
{
QStringList heard;
heard<<"X1_Y1-X2_Y2";
ui.tableWidget-> setHorizontalHeaderLabels ( heard );


//再重新添加,添加0_1
for (int i = 0; i < ui.label_3->m_listCenter.size(); i++)
{
QString str = QString("X1=%1,Y1=%2,X2=%3,Y2=%4").arg(ui.label_2->m_listCenter.at(i).x()).arg(ui.label_2->m_listCenter.at(i).y()).arg(ui.label_3->m_listCenter.at(i).x()).arg(ui.label_3->m_listCenter.at(i).y());


ui.tableWidget->insertRow(i);
QTableWidgetItem *item = new QTableWidgetItem(str);
ui.tableWidget->setItem(i, 0, item );
}
}

}


void CTabTwo::OnTableRightBtn(QTableWidgetItem *item )
{
if (qApp->mouseButtons() == Qt::RightButton)
{
QMenu menu;
menu.addAction(m_pAcDel);
menu.addAction(m_pAcCel);


menu.exec(QCursor::pos()/*mapToGlobal(qApp->pos())*/);
}
else if (qApp->mouseButtons() == Qt::LeftButton)
{
int n = ui.tableWidget->currentRow();


if (m_nCurrentView == 1)
{
ui.label_1->FocusPoint(n);
ui.label_2->FocusPoint(n);
}
else if(m_nCurrentView ==2)
{
ui.label_2->FocusPoint(n);
ui.label_3->FocusPoint(n);
}

}
}


void CTabTwo::OnTableSelectChanged()
{
int n = ui.tableWidget->currentRow();


if (m_nCurrentView == 1)
{
ui.label_1->FocusPoint(n);
ui.label_2->FocusPoint(n);
}
else if(m_nCurrentView ==2)
{
ui.label_2->FocusPoint(n);
ui.label_3->FocusPoint(n);
}
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值