|
|
@@ -11,7 +11,7 @@
|
|
|
#include "spdlog/spdlog.h"
|
|
|
#include "timepopupwidget.h"
|
|
|
|
|
|
-TimeWidget::TimeWidget(QWidget *parent , ShowType type) :
|
|
|
+TimeWidget::TimeWidget(QWidget *parent, ShowType type) :
|
|
|
QFrame(parent),
|
|
|
ui(new Ui::TimeWidget),
|
|
|
m_wdgTimeArea(nullptr),
|
|
|
@@ -23,16 +23,16 @@ TimeWidget::TimeWidget(QWidget *parent , ShowType type) :
|
|
|
}
|
|
|
|
|
|
|
|
|
-TimeWidget::TimeWidget(ShowType type) :
|
|
|
- QFrame(nullptr),
|
|
|
- ui(new Ui::TimeWidget),
|
|
|
- m_wdgTimeArea(nullptr),
|
|
|
- m_pMainWindow(nullptr),
|
|
|
- m_type(type)
|
|
|
-{
|
|
|
- ui->setupUi(this);
|
|
|
- Init();
|
|
|
-}
|
|
|
+// TimeWidget::TimeWidget(ShowType type) :
|
|
|
+// QFrame(nullptr),
|
|
|
+// ui(new Ui::TimeWidget),
|
|
|
+// m_wdgTimeArea(nullptr),
|
|
|
+// m_pMainWindow(nullptr),
|
|
|
+// m_type(type)
|
|
|
+// {
|
|
|
+// ui->setupUi(this);
|
|
|
+// Init();
|
|
|
+// }
|
|
|
|
|
|
TimeWidget::~TimeWidget()
|
|
|
{
|
|
|
@@ -58,35 +58,6 @@ QTime TimeWidget::getTime()
|
|
|
}
|
|
|
|
|
|
|
|
|
-/**
|
|
|
- * @brief 存在时间就返回hh:mm:ss.zzz格式字符串,否则返回提示信息
|
|
|
- * @return
|
|
|
- */
|
|
|
-// QString TimeWidget::getTimeStr()
|
|
|
-// {
|
|
|
-// QString ret(ui->lbl_tip->text());
|
|
|
-// if (!ui->dateTimeEdit->isHidden()) {
|
|
|
-// ret = ui->dateTimeEdit->time().toString("hh:mm:ss");//.zzz
|
|
|
-// }
|
|
|
-// return ret;
|
|
|
-// }
|
|
|
-/**
|
|
|
- * @brief 存在返回时间,否则返回00:00:00
|
|
|
- * @return
|
|
|
- */
|
|
|
-// QTime TimeWidget::getFormTime() const
|
|
|
-// {
|
|
|
-// return ui->dateTimeEdit->isHidden() ? QTime(0, 0, 0) : ui->dateTimeEdit->time();
|
|
|
-// }
|
|
|
-
|
|
|
-// void TimeWidget::setTime(const QString& t)
|
|
|
-// {
|
|
|
-// QTime time = QTime::fromString(t, "hh:mm:ss");
|
|
|
-// ui->dateTimeEdit->setTime(time);
|
|
|
-// ui->lbl_tip->hide();
|
|
|
-// ui->dateTimeEdit->show();
|
|
|
-// UpdatePopupTime(ui->dateTimeEdit->dateTime());//
|
|
|
-// }
|
|
|
|
|
|
void TimeWidget::setTime(const QTime& t)
|
|
|
{
|
|
|
@@ -184,6 +155,27 @@ void TimeWidget::setWheelDisabled(bool disabled)
|
|
|
m_isDisableWheel = disabled;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+/* 设置启用与否*/
|
|
|
+void TimeWidget::setEditLineEnable(bool enable)
|
|
|
+{
|
|
|
+ this->setEnabled(enable);
|
|
|
+ if(!enable)
|
|
|
+ {
|
|
|
+ if(m_pTimePopupWidget != nullptr && m_pTimePopupWidget->isVisible())
|
|
|
+ {
|
|
|
+ m_isBanPopupShow = true;
|
|
|
+ ShowPopupArea(false);
|
|
|
+ UpdateProperty(this, "hover", false);
|
|
|
+ }
|
|
|
+ ui->btn_tip->hide();
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ ui->btn_tip->show();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
/* 设置QSS */
|
|
|
void TimeWidget::setQSS()
|
|
|
{
|
|
|
@@ -242,13 +234,16 @@ bool TimeWidget::eventFilter(QObject* obj, QEvent* e)
|
|
|
if (e->type() == QEvent::FocusIn && m_type == EditLine)
|
|
|
{
|
|
|
/* 如果Popup正在关闭 */
|
|
|
- if(m_isBanPopupShow == true)
|
|
|
- {
|
|
|
- m_isBanPopupShow = false;
|
|
|
- /* 这里需要再次失去焦点,否则下次点击编辑栏无法弹出Popup */
|
|
|
- ui->dateTimeEdit->clearFocus();
|
|
|
- return QWidget::eventFilter(obj, e);
|
|
|
- }
|
|
|
+
|
|
|
+ if(m_isBanPopupShow == true)
|
|
|
+ {
|
|
|
+ m_isBanPopupShow = false;
|
|
|
+ /* 这里需要再次失去焦点,否则下次点击编辑栏无法弹出Popup */
|
|
|
+ ui->dateTimeEdit->clearFocus();
|
|
|
+ return QWidget::eventFilter(obj, e);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
//qInfo() << "dateTimeEdit focusIn";
|
|
|
ShowPopupArea(true);
|
|
|
UpdateProperty(ui->btn_tip, "selected", true);
|
|
|
@@ -299,7 +294,12 @@ bool TimeWidget::eventFilter(QObject* obj, QEvent* e)
|
|
|
{
|
|
|
return QWidget::eventFilter(obj, e);
|
|
|
}
|
|
|
- m_isBanPopupShow = true;
|
|
|
+ /* 如果焦点不在编辑栏,Popup窗口隐藏后,编辑栏会重新获取焦点,将会再次跳出Popup窗口
|
|
|
+ 因此在其没有焦点的时候设置 m_isBanPopupShow ,防止Popup隐藏后编辑栏再次获取焦点再次弹出Popup */
|
|
|
+ if(!ui->dateTimeEdit->hasFocus())
|
|
|
+ {
|
|
|
+ m_isBanPopupShow = true;
|
|
|
+ }
|
|
|
|
|
|
ShowPopupArea(false);
|
|
|
UpdateProperty(this, "hover", false);
|
|
|
@@ -429,7 +429,7 @@ void TimeWidget::ShowPopupArea(bool bShow)
|
|
|
/* 设置弹窗Popup的大小,使用默认的固定大小,不允许改变
|
|
|
关于高度:确定取消按钮所占的高度是固定的32,和一节大小一样,所以这里 */
|
|
|
int width = 2 * SHADOW_MARGIN + TIME_AREA_WIDTH * m_vecTimeSections.size();
|
|
|
- int height = TIME_AREA_HEIGHT * 7 + 2 * SHADOW_MARGIN;
|
|
|
+ int height = TIME_AREA_HEIGHT * 7 + 2 * SHADOW_MARGIN + 8;
|
|
|
m_wdgTimeArea->resize(QSize(width, height));
|
|
|
UpdatePopupTime(ui->dateTimeEdit->dateTime());
|
|
|
/* 保存现在的时间 */
|
|
|
@@ -513,8 +513,21 @@ void TimeWidget::Init()
|
|
|
}
|
|
|
ui->btn_tip->setProperty("selected", false);
|
|
|
|
|
|
+ /* 设置时间图标大小 */
|
|
|
+ ui->btn_tip->setFixedSize(16, 16);
|
|
|
+
|
|
|
+ /* 设置初始值 */
|
|
|
+ QTime t(0, 0, 0);
|
|
|
+ ui->dateTimeEdit->setTime(t);
|
|
|
+ ui->lbl_tip->hide();
|
|
|
+ /* 使用这个阻止show的时候获取焦点自动弹出Popup */
|
|
|
+ m_isBanPopupShow = true;
|
|
|
+ ui->dateTimeEdit->show();
|
|
|
+ m_formerDateTime.setTime(t);
|
|
|
+
|
|
|
connect(ui->btn_tip, &QPushButton::clicked, this, &TimeWidget::do_pBtn_tip_Clicked);
|
|
|
connect(ui->dateTimeEdit, &QDateTimeEdit::dateTimeChanged, this, &TimeWidget::onDateTimeChanged);
|
|
|
|
|
|
// setDefaultStyle();
|
|
|
+
|
|
|
}
|