QT - Ukrycie funkcji/właściwości

0

Witam!

Usiłuję mocno zmodyfikować QLineEdit.
Stworzyłem klasę dziedziczącą po okienku:

class QDecEdit : public QLineEdit
{
    Q_OBJECT
public:
    explicit QDecEdit(QWidget *parent = 0);

protected:
    // nowa obsługa zdarzeń - tutaj wszystko jest OK
    void keyPressEvent(QKeyEvent *event);
    void mousePressEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);
    void mouseReleaseEvent(QMouseEvent *event);
    void mouseDoubleClickEvent(QMouseEvent *event);

};

Problem jest taki, aby "przysłonić" oryginalny setText/text i jego odpowiednika w Q_PROPERTY.
Chcę uzyskać taki efekt, aby setText/text były niewidoczne, a w zamian stworzyć np. setValue/value i jego Q_PROPERTY.
user image

Z utworzeniem nowych funkcji i Q_PROPERTY nie mam problemu, ale jak "ukryć" np. setText/text, Q_PROPERTY pochodzące od QLineEdit?

0

Z nowymi Q_PROPERTY też jednak jest problem:

class QDecEdit : public QLineEdit
{
    Q_OBJECT

    Q_PROPERTY(int value READ value WRITE setValue) // nie widać :(

public:
    explicit QDecEdit(QWidget *parent = 0);

    // szybki test
    void setValue(int value){ mValue = value; }
    int value(){ return mValue; }

protected:
    int mValue;
    void keyPressEvent(QKeyEvent *event);
    void mousePressEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);
    void mouseReleaseEvent(QMouseEvent *event);
    void mouseDoubleClickEvent(QMouseEvent *event);


};

W QtCreatorze wrzucam QEditLine i robię podmianę na QDecLine, jednak w oknie właściwości nie pojawia się "value".
Z poziomu kodu dostęp jest:

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->decEdit->setValue(123);
}

Co zrobić, aby Q_PROPERTY było widoczne w kreatorku?

0

trzeba dużo zrobić. Zapewne będzie to poza twoim zasięgiem (brak umiejętności i/lub cierpliwości).
Proces jest udokumentowany tutaj
Musisz stworzyć bibliotekę z twoim widgetem, a potem jeszcze zrobić z tego wtyczkę do Qt designer.

Dodatkowo przeczytaj dokumentację Q_PROPERTY.

Jeszcze jedno wyważasz otwarte drzwi: http://doc.qt.io/qt-5/qdoublespinbox.html

0

Dodanie q_property mialo byc tylko kosmetyka, wiec z braku czasu bawieniem sie, zostawie to.

Co usiluje zrobic:
Potrzebuje okienko liczbowe, gdzie dodatkowo strzalkami lewo/prawo wybieram cyfre, a gora/dol zmieniam wartosc(z przeniesieniem).

Najwiecej kombinowania bylo zeby cyfre fajnie zaznaczyc.

Okazalo sie ze jak wpisze maske w QLineEdit np. 0000 to te zaznaczenie cyfr juz jest wbudowane w QLineEdit, wiec dopisalem obsluge klawiszy up/down i jest ok.

Teraz walcze zeby utrzymac format:
12 000.000 000 MHz
Gdzie cyfry z prawej strony kropki zawsze musza wystapic, a z lewej zakres od 10.xxx xxx MHz do 1 900.xxx xxx MHz

Kombinuje, kombinuje... czy tez wywazam otwarte drzwi? Jakis pomysl zeby nie przekombinowac a zrobic?

sorki za brak polskich literek(telefon :( )

1 użytkowników online, w tym zalogowanych: 0, gości: 1