推广QTableWidget的正确方法



我需要有一个自定义的qtablewidget,我已经在QTableWidget中内置了它,如下所示:

刚刚创建了一个名为 Inventory 的类,然后从 QTableWidget 继承了它,从 qt 设计器将 qtablewidget 添加到 mainwindow 中并将其提升为Inventory

//inventory.h
#ifndef INVENTORY_H
#define INVENTORY_H    
#include <QTableWidget>
class Inventory : public QTableWidget
{
public:
    Inventory(QTableWidget* parent = 0);
};
#endif // INVENTORY_H

//inventory.cpp
#include "inventory.h"    
Inventory::Inventory(QTableWidget *parent)
    : QTableWidget(parent)
{
    setRowCount(3);
    setColumnCount(3);
    horizontalHeader()->setDefaultSectionSize(160);
    verticalHeader()->setDefaultSectionSize(160);
}

但由于某种原因,它无法正确构建,而是抛出这个:

error: invalid conversion from ‘QWidget*’ to ‘QTableWidget*’ [-fpermissive]
         tableWidget = new Inventory(centralWidget);
                                 ^

在行的ui_mainwindow.h文件中

其中tableWidget声明为Inventory* tableWidget

怎么了??

如何解决这个问题?

附言

使用 Qt 5.7.1 进行构建和 qtcreator 4.2.0

我认为您在派生类(基数为 QTableWidget)和派生库存类的构造函数之间感到困惑。显然,要使Qt和Qt编辑器正常工作,您需要定义一个 Inventory::Inventory(QWidget* parent = 0)构造函数,将QWidget作为父小部件。(这里的父级在容器小部件的意义上,通常是一个布局)您的构造函数正在采用对我来说似乎很可疑的QTableWidget*,而您的编译器告诉您QWdget*不是QTableWidget*,这是有道理的。

更改清单构造函数的签名应使作业

相关内容

  • 没有找到相关文章

最新更新