我有一个从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
}
有人会知道我的问题吗?
答案 0 :(得分:3)
QLayout
具有纯虚拟方法,您必须在要实例化的子类中实现这些方法。
这些是
void addItem(QLayoutItem *item);
int count() const;
QLayoutItem * itemAt(int index) const;
QLayoutItem * takeAt(int index);
您关于QWidget
继承QLayout
的断言是错误的,它从QObject
和QPaintDevice
继承,这两个都没有基类。 QWidget
的布局为 member ,用于布置子窗口小部件。
我也不认为您需要一个从QLayout
派生的类。您应该使用现有布局和窗口小部件类型的 object 组合来布置窗口。作为QT安装的一部分,您应该拥有QDesigner.exe
可视化设计窗口的工具。