QTableWidgetDervied :: cellChanged

时间:2014-05-18 02:42:02

标签: c++ qt qtablewidget qtcore qt-signals

当我编辑单元格时,不会调用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)));

这不起作用。有什么问题?

2 个答案:

答案 0 :(得分:1)

void cellChanged(int row, int column)是一个SIGNAL,而不是您可以覆盖的虚函数。只需将SIGNAL连接到SLOT并继续。

答案 1 :(得分:1)

  

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

它不能被调用,只发出正弦信号而不是方法或插槽。

分别在您QTableWidget的子类时,您不需要将声明放入您的班级。

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

此外,虽然不使用插槽中cellChanged的参数进行编译错误,但您可能希望根据您的用例重新考虑该决定。

此外,您的广告位未标记为广告位,只是您的类声明中的常规公共方法。您需要将其更改为类似的内容,否则,它将无法接受,您可能会遇到运行时问题,这可能是您的问题所在:

public slots:
    void f();