在Qt 5中创建继承类的最简单方法是什么?

时间:2013-06-21 01:54:06

标签: c++ qt class inheritance

我是一个Qt新手,我要做的就是创建一个带有一些自定义(默认对齐和默认文本)的自定义QLineEdit类。现在我只是想建立一个基类,只继承QWidget。这就是我所拥有的(我知道非常糟糕的代码):

userText(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来宣传我对其他系列的修改。

1 个答案:

答案 0 :(得分:0)

QLineEdit已经有alignment可以设置,还有placeholderText

LE:正如我所说,没有必要继承QLineEdit(或QWidget)这个功能,但如果你真的想这样做,你可以创建你的类并编写一个构造函数获取您想要的参数并使用它来调用QLineEdit的功能,例如:

//in the header
//... i skipped the include guards and headers 
class utxt : public QLineEdit
{
    Q_OBJECT
public:
//you can provide default values for all the parameters or hard code it into the calls made from the constructor's definition
    utxt(const QString& defaultText = "test text", Qt::Alignment align = Qt::AlignRight, QWidget *parent = 0);
};

//in the cpp
utxt::utxt(const QString& defaultText, Qt::Alignment alignement, QWidget *parent) :     QLineEdit(parent)
{
//call setPlaceHolder with a parameter or hard-code the default
    setPlaceholderText(defaultText); 
//same with the default alignement
    setAlignment(alignement); 
}