QTableWidgetDervied::cellChanged

QTableWidgetDervied::cellChanged

本文关键字:cellChanged QTableWidgetDervied      更新时间:2023-10-16

当我编辑单元格时,cellChanged未被调用。我做错了什么?

class QTableWidgetDerived : public QTableWidget
{
    Q_OBJECT
    //...
protected:
    void cellChanged(int row, int column)
    {
        //...
    }
    //...
};

class QTableWidgetDerived : public QTableWidget
{
    Q_OBJECT
public:
    //...
void f(int, int);
protected:
    void cellChanged(int row, int column)
    {
        //...
    }
    //...
};

connect(this, SIGNAL(cellChanged(int, int)), this, SLOT(f(int, int));

这不起作用。怎么了?

void cellChanged(int row, int column)是一个SIGNAL,而不是一个可以重写的虚函数。

当我编辑单元格时,cellChanged未被调用。我做错了什么?

它不能被调用,只能被发出,因为它是一个信号,而不是一个方法或槽。

分别,当您子类化QTableWidget时,您不需要将声明放入您的类中。

此外,您的连接使用是错误的。你试图在课外使用它,这是错误的。我建议把它放到一个实际的方法中,否则它甚至不会编译。

同样,虽然在您的槽中不使用cellChanged的参数不是编译错误,但您可能希望根据您的用例重新考虑该决定。

此外,您的slot没有被标记为slot,只是类声明中的常规公共方法。您需要将其更改为这样的内容,否则,它将再次不可接受,并且您可能会遇到运行时问题,这可能是您在这里的问题:

public slots:
    void f();