Юрий
ЮрийМаусым 3, 2017, 2:56 Т.Қ.

Маска для ввода номера телефона

Есть QLineEdit. Cделал маску в дизайнере для ввода номера телефона (8-000-000-00-00). Как сделать что бы при клике мыши, курсор вставал на 3 позицию.

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

5
Evgenii Legotckoi
  • Маусым 4, 2017, 2:18 Т.Ж.
  • Жауап шешім ретінде белгіленді.

Без наследования от класса QLineEdit и переопределения метода mousePressEvent будет весьма проблематично это сделать. Поэтому правильнее будет так сделать:

customlineedit.h

#ifndef CUSTOMLINEEDIT_H
#define CUSTOMLINEEDIT_H

#include <QLineEdit>

class CustomLineEdit : public QLineEdit
{
    Q_OBJECT
public:
    explicit CustomLineEdit(QWidget *parent = nullptr);

protected:
    void mousePressEvent(QMouseEvent *event);

signals:

public slots:
};

#endif // CUSTOMLINEEDIT_H

customlineedit.cpp

#include "customlineedit.h"

CustomLineEdit::CustomLineEdit(QWidget *parent) : QLineEdit(parent)
{
    setInputMask("8-000-000-00-00");
}

void CustomLineEdit::mousePressEvent(QMouseEvent *event)
{
    QLineEdit::mousePressEvent(event);
    setCursorPosition(2);
}

В самом графическом дизайнере можно преобразовать QLineEdit в этот класс. Там есть пункт преобразовать в контекстном меню, если кликнуть по виджету QLineEdit.

    Юрий
    • Маусым 12, 2017, 9:43 Т.Ж.

    Все работает. Только я удалил nullptr, для чего он нужен?

      Evgenii Legotckoi
      • Маусым 12, 2017, 11:37 Т.Ж.

      Из конструктора? Это значение по умолчанию. В стандарте C++11 это платформо независимый нуль для указателей. Рекомендую пользоваться именно им, а не NULL.

        Юрий
        • Маусым 12, 2017, 12:03 Т.Қ.
        При компиляции предупреждение и  ошибка.
        identifier 'nullptr' is a keyword in C++11 [-Wc++0x-compat]
        explicit CustomLineEdit(QWidget *parent = nullptr);
        'nullptr' was not declared in this scope
        explicit CustomLineEdit(QWidget *parent = nullptr);
        Подключал в pro:
        CONFIG += c++11
        Но не помогло.
          Evgenii Legotckoi
          • Маусым 12, 2017, 2:28 Т.Қ.

          Смотрите настройки компилятора. Судя по ошибке, у вас на стандарт c++0x он настроен. Одного CONFIG += c++11 мало.

            Пікірлер

            Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
            Кіріңіз немесе Тіркеліңіз
            Г

            C++ - Тест 001. Первая программа и типы данных

            • Нәтиже:66ұпай,
            • Бағалау ұпайлары-1
            t

            C++ - Тест 001. Первая программа и типы данных

            • Нәтиже:33ұпай,
            • Бағалау ұпайлары-10
            t

            Qt - Тест 001. Сигналы и слоты

            • Нәтиже:52ұпай,
            • Бағалау ұпайлары-4
            Соңғы пікірлер
            G
            GoattRockҚыр. 3, 2024, 8:50 Т.Қ.
            Linux жүйесінде файлдарды қалай көшіруге болады Задумывались когда-нибудь о том, как мы привыкли доверять свои вещи службам грузоперевозок? Сейчас такие услуги стали неотъемлемой частью нашей жизни, особенно когда речь идет о переездах между …
            d
            dblas5Шілде 5, 2024, 6:02 Т.Қ.
            QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
            k
            kmssrАқп. 9, 2024, 2:43 Т.Ж.
            Qt Linux - Сабақ 001. Linux астында Autorun Qt қолданбасы как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
            АК
            Анатолий КононенкоАқп. 5, 2024, 9:50 Т.Ж.
            Qt WinAPI - Сабақ 007. Qt ішінде ICMP Ping арқылы жұмыс істеу Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
            Енді форумда талқылаңыз
            Evgenii Legotckoi
            Evgenii LegotckoiМаусым 24, 2024, 10:11 Т.Қ.
            добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
            F
            FynjyШілде 22, 2024, 11:15 Т.Ж.
            при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …
            BlinCT
            BlinCTМаусым 25, 2024, 8 Т.Ж.
            Нарисовать кривую в qml Всем привет. Имеется Лист листов с тосками, точки получаны интерполяцией Лагранжа. Вопрос, как этими точками нарисовать кривую? ChartView отпадает сразу, в qt6.7 появился новый элемент…
            BlinCT
            BlinCTМамыр 5, 2024, 12:46 Т.Қ.
            Написать свой GraphsView Всем привет. В Qt есть давольно старый обьект дял работы с графиками ChartsView и есть в 6.7 новый но очень сырой и со слабым функционалом GraphsView. По этой причине я хочу написать х…
            Evgenii Legotckoi
            Evgenii LegotckoiМамыр 2, 2024, 9:07 Т.Қ.
            Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Добрый день. По моему мнению - да, но то, что будет касаться вызовов к функционалу Андроида, может создать огромные трудности.

            Бізді әлеуметтік желілерде бақылаңыз