0

私は 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 の 2 つの関数で「ローカル関数の定義が不正です」というエラーが発生し続けます。誰かが私を正しい方向に向けることができますか? QLineEdit他の行の編集を宣伝するためのカスタムを作成しようとしています。

4

1 に答える 1

0

QLineEdit設定可能な配置とplaceholderTextが既にあります。

QLineEditLE: 私が言ったように、この機能のために(または)から継承する必要はありません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); 
}
于 2013-06-21T06:30:14.287 に答える