【发布时间】:2013-06-21 01:54:05
【问题描述】:
我是 Qt 新手,我想做的只是创建一个自定义的 QLineEdit 类,并进行一些自定义(默认对齐和默认文本)。现在我只是想建立一个基类,只继承QWidget。这就是我所拥有的(我知道非常糟糕的代码):
用户文本(utxt.h):
#ifndef UTXT_H
#define UTXT_H
#include <QWidget>
#include <QLineEdit>
class utxt : public QWidget
{
Q_OBJECT
public:
explicit utxt(QWidget *parent = 0);
QString text () const;
const QString displayText;
Qt::Alignment alignment;
void setAlignment(Qt::Alignment);
signals:
public slots:
};
#endif // UTXT_H
utxt.cpp:
#include "utxt.h"
utxt::utxt(QWidget *parent) :
QWidget(parent)
{
QString utxt::text()
{
return this->displayText;
}
void utxt::setAlignment(Qt::Alignment align)
{
this->alignment = align;
}
}
我知道这确实是错误的,并且我在 utxt.cpp 中的两个函数上不断收到“本地函数定义非法”错误。有人可以指出我正确的方向吗?我只是想创建一个自定义 QLineEdit 来推广我的其他行编辑。
【问题讨论】:
-
看起来你也是一个 C++ 新手。您不能在构造函数中定义函数。在尝试使用 Qt 之前,您真的应该从更简单的项目开始。如果您想创建“自定义 QLineEdit”,那么首先从 QLineEdit 继承。
-
天哪,我是个白痴!我已经习惯了源文件中的类定义,就像在 C# 中一样,我只是假设它是一个类定义。我把我的函数放在构造函数之外,错误就被清除了。谢谢!不过有一个问题......如果我从 QLineEdit 继承,我是否也从 QWidget 继承?因为我想我尝试过仅从 QLineEdit 继承一次,而 SetGeometry 等函数不可用。我必须继承两者吗?
-
不,您不能同时继承自 QWidget 和 QLineEdit(因为两者都间接继承自 QObject 并且您的类层次结构中不能有两次 QObject),无论如何请告诉我们更多关于您在尝试什么这样做,因为你描述的功能可以在不继承 QLineEdit 的情况下完成。
标签: c++ qt class inheritance