QTableView:如何正确使用clicked()信号来获取所选项目的索引?

时间:2016-03-03 11:33:19

标签: c++ qt click signals

我在每一行都有一个删除按钮。我正在尝试使用clicked()的{​​{1}} SIGNAL来获取当前索引,然后相应地执行某些操作,但在这种情况下不会调用此插槽。出于某种原因,它无法正常工作,我在连接QTableview SIGNAL时遇到了一些错误吗?

clicked()

1 个答案:

答案 0 :(得分:1)

其中一个解决方案可能如下所示:

class Button : public QPushButton
{
    Q_OBJECT
public:
    Button(int row, QWidget *parent = 0) : QPushButton(parent), m_row(row)
    {
        connect(this, SIGNAL(clicked()), this, SLOT(onClicked()));
    }

signals:
    void clicked(int row);

private slots:
    void onClicked()
    {
        emit clicked(m_row);
    }
private:
    int m_row;
};

Button类包含一个自定义信号clicked(int),其中行号作为参数。要在表格视图中使用它,您需要执行以下操作:

Button *btn = new Button(rowNumber, this);
connect(btn, SIGNAL(clicked(int)), this, SLOT(onButtonClicked(int)));