QTableWidget中添加按钮

本文介绍如何在QTableWidget中添加自定义按钮,并实现按钮点击信号的正确触发。通过使用QSignalMapper,可以将按钮点击事件映射到特定的槽函数,从而实现对不同按钮点击事件的区分处理。

添加按钮

void QTableWidget::setCellWidget ( int row, int column, QWidget * widget )

widget可以是自己定义的按钮

class MyPushButton : public QPushButton
{
    Q_OBJECT
public:
    explicit MyPushButton(int i, int j, int flag);
    ~MyPushButton();
    void mySetText();//i对应端口信息
}
mySetText()函数中:

setStyleSheet("background-color: rgb(255, 100, 0);");//橙色 setToolTip(tr("端口未授权"));//配置的MAC地址和采集卡不符合 setText(tr("端口%1").arg(m_no + 1));

按钮添加完之后怎么去触发它的点击信号呢?尝试了很多中方法,比如直接调用  QTableWidget的itemclicked函数,都失败了,

最后从Stackoverflow上找到了类似的方法,将comboBox的触发方法改成pushButton就好了

QSignalMapper* signalMapper = new QSignalMapper(this);

connect(newBtn, SIGNAL(clicked()), signalMapper, SLOT(map()));

//存储按钮
signalMapper->setMapping(newBtn, QString("%1-%2").arg(rowCount).arg(i + 2));

connect(signalMapper, SIGNAL(mapped(const QString &)),this, SLOT(changed(const QString &)));


//槽函数
void MainWindow::changed(QString position)
{
    QStringList coordinates = position.split("-");
    int row = coordinates[0].toInt();
    int col = coordinates[1].toInt();
    disPlayPort(row,col);//row 和col就是对应的行和列,对应到相应的按钮
}

 

转载于:https://www.cnblogs.com/doubleeleven/p/3895643.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值