Qt自定义文本输入框实现支持输入度分秒和度两种格式(简易无限制输入)

1.自定义文本输入框

#ifndef MYLINEEDIT_H
#define MYLINEEDIT_H

#include <QLineEdit>
#include "ui_mylineedit.h"


class MyLineEdit : public QLineEdit
{
  Q_OBJECT

public:
  MyLineEdit(QWidget *parent = 0);
  ~MyLineEdit();

private:
  void focusOutEvent(QFocusEvent *) Q_DECL_OVERRIDE;

private:
  Ui::MyLineEdit ui;
};

#endif // MYLINEEDIT_H

  

void MyLineEdit::focusOutEvent(QFocusEvent *event){
  QLineEdit::focusOutEvent(event);

  QString curText = text();
  QString str = curText.replace(QStringLiteral("°"), ",").replace(QStringLiteral("′"), ",").replace(QStringLiteral("″"), "");
  QStringList listStr = str.split(",");
  if (listStr.size() != 3) return;
  bool isD = false, isF = false, isM = false;
  int d = listStr[0].toInt(&isD);
  int f = listStr[1].toInt(&isF);
  int m = listStr[2].toInt(&isM);
  if (!isD || !isF || !isM) return;
  setText(QString::number(d + f / 60.0 + m / 3600.0));
}

  2.提升QLineEdit

已经工作的程序员朋友可以关注下我的gzh“程序员成长日志”,分享日常工作中解决的问题即可赚取稿费,大家一起成长~

猜你喜欢

转载自www.cnblogs.com/czrz1024/p/12675869.html
今日推荐