QLayout类和QMainWindow Qt c ++之间的继承

时间:2018-06-22 09:57:17

标签: c++ qt c++11

我有一个从QMainWindow继承的MainWindow类。我有另一个从QLayout继承的LayoutWindow类。 当我声明LayoutWindow类的实例时,出现错误:

  

错误:抽象类类型的new表达式无效...

我不明白,因为QMainWindow继承自QWidget,而QWidget继承自QLayout?

这是我的代码:

MainWindow类:

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{//instance class LayoutWindow
layoutwindow=new LayoutWindow();

centralArea = new QWidget;
centralArea->setLayout(layoutwindow);
setCentralWidget(centralArea);
}

LayoutWindow.h类

class LayoutWindow : public QLayout{

Q_OBJECT

public:
LayoutWindow();
};

LayoutWindow.cpp类

LayoutWindow::LayoutWindow(){

 //here is my code
}

有人会知道我的问题吗?

1 个答案:

答案 0 :(得分:3)

QLayout具有纯虚拟方法,您必须在要实例化的子类中实现这些方法。

这些是

void addItem(QLayoutItem *item);
int count() const;
QLayoutItem * itemAt(int index) const;
QLayoutItem * takeAt(int index);

您关于QWidget继承QLayout的断言是错误的,它从QObjectQPaintDevice继承,这两个都没有基类。 QWidget的布局为 member ,用于布置子窗口小部件。

我也不认为您需要一个从QLayout派生的类。您应该使用现有布局和窗口小部件类型的 object 组合来布置窗口。作为QT安装的一部分,您应该拥有QDesigner.exe可视化设计窗口的工具。

相关问题