我需要有一个自定义的qtablewidget,我已在QTableWidget
内置了如下内容:
刚刚创建了一个名为Inventory
的类,然后从QTableWidget
继承了它,将qtablewidget从qt设计器添加到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);
^
在<{p>}行的ui_mainwindow.h
文件中
其中tableWidget
被声明为Inventory* tableWidget
有什么不对?
如何解决这个问题?
P.S。
使用qt 5.7.1构建 和qtcreator 4.2.0
答案 0 :(得分:1)
我认为你的派生类是基于QTableWidget和派生的Inventory类的构造函数之间的混淆。
显然,对于Qt和Qt编辑器来说,你需要定义一个
Inventory::Inventory(QWidget* parent = 0)
构造函数,将QWidget
作为父窗口小部件。 (父元素在容器小部件的意义上,通常是一个布局)
您的构造函数正在使用QTableWidget*
,这对我来说似乎非常可疑,并且您的编译器告诉您QWdget*
不是QTableWidget*
,这是有道理的。
更改Inventory构造函数的签名应该生成作业