在Qt创建者中推广QWidget,构造函数存在问题



I子类QGraphicsView:

class CustomGraphicsView : public QGraphicsView
{
public:
    CustomGraphicsView(QWidget *parent = 0);
...
}

.cpp文件中的构造函数实现如下:

CustomGraphicsView::CustomGraphicsView(QWidget * parent):
    QGraphicsView(parent)
{
}

现在,我通过Qt创建者将QGraphicsView小部件升级到CustomGraphicsView。但是,当我想连接到ImageWindow类的构造函数中的升级小部件时;

ImageWindow::ImageWindow(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::ImageWindow)
{
    ui->setupUi(this);
    CustomGraphicsView * view = ui->graphicsView();
}

我收到错误消息:

term does not evaluate to a function taking 0 arguments.

我为构造函数指定了一个默认值,即QWidget*parent=0,在ui_image_window.h中设置了一个参数:

graphicsView = new CustomGraphicsView(ImageWindow);

那么,是什么原因导致了这个错误呢?

这是因为graphicsView是一个成员而不是一个方法,所以不需要括号。就像访问view = ui->graphicsView一样。这对于生成的UI类中的所有Qt小部件都是一样的——它们只是成员,而不是方法。

相关内容

  • 没有找到相关文章

最新更新