optimize datetime plugin

Change-Id: Id188ab920cd66ee2c91215c9877cc3edabd0fa1e
This commit is contained in:
石博文 2016-06-16 17:48:19 +08:00 committed by Hualet Wang
parent 2ceeccec1d
commit d501d3903b
5 changed files with 46 additions and 18 deletions

View File

@ -9,16 +9,10 @@ PluginsItem::PluginsItem(PluginsItemInterface* const inter, QWidget *parent)
: DockItem(Plugins, parent), : DockItem(Plugins, parent),
m_inter(inter) m_inter(inter)
{ {
// QBoxLayout *layout = new QBoxLayout; QBoxLayout *layout = new QHBoxLayout;
// layout->addWidget(m_inter->); layout->addWidget(m_inter->centeralWidget());
} layout->setSpacing(0);
layout->setMargin(0);
void PluginsItem::paintEvent(QPaintEvent *e) setLayout(layout);
{
DockItem::paintEvent(e);
QPainter painter(this);
painter.fillRect(rect().marginsRemoved(QMargins(3, 3, 3, 3)), Qt::cyan);
painter.setPen(Qt::red);
painter.drawText(rect(), m_inter->name());
} }

View File

@ -11,9 +11,6 @@ class PluginsItem : public DockItem
public: public:
explicit PluginsItem(PluginsItemInterface* const inter, QWidget *parent = 0); explicit PluginsItem(PluginsItemInterface* const inter, QWidget *parent = 0);
private:
void paintEvent(QPaintEvent *e);
private: private:
PluginsItemInterface* const m_inter; PluginsItemInterface* const m_inter;
}; };

View File

@ -1,13 +1,15 @@
#ifndef PLUGINSITEMINTERFACE_H #ifndef PLUGINSITEMINTERFACE_H
#define PLUGINSITEMINTERFACE_H #define PLUGINSITEMINTERFACE_H
class QString; #include <QtCore>
class PluginsItemInterface class PluginsItemInterface
{ {
public: public:
virtual ~PluginsItemInterface() {} virtual ~PluginsItemInterface() {}
virtual const QString name() = 0; virtual const QString name() = 0;
virtual QWidget *centeralWidget() = 0;
}; };
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE

View File

@ -1,12 +1,37 @@
#include "datetimeplugin.h" #include "datetimeplugin.h"
DatetimePlugin::DatetimePlugin(QObject *parent) DatetimePlugin::DatetimePlugin(QObject *parent)
: QObject(parent) : QObject(parent),
m_timeLabel(new QLabel),
m_refershTimer(new QTimer(this))
{ {
m_timeLabel->setStyleSheet("color:red;");
m_refershTimer->setInterval(1000);
m_refershTimer->start();
connect(m_refershTimer, &QTimer::timeout, this, &DatetimePlugin::refershTime);
}
DatetimePlugin::~DatetimePlugin()
{
delete m_timeLabel;
} }
const QString DatetimePlugin::name() const QString DatetimePlugin::name()
{ {
return "datetime"; return "datetime";
} }
QWidget *DatetimePlugin::centeralWidget()
{
return m_timeLabel;
}
void DatetimePlugin::refershTime()
{
const QString text = QTime::currentTime().toString(tr("HH:mm"));
if (m_timeLabel->text() != text)
m_timeLabel->setText(text);
}

View File

@ -1,10 +1,11 @@
#ifndef DATETIMEPLUGIN_H #ifndef DATETIMEPLUGIN_H
#define DATETIMEPLUGIN_H #define DATETIMEPLUGIN_H
#include <QObject>
#include "pluginsiteminterface.h" #include "pluginsiteminterface.h"
#include <QLabel>
#include <QTimer>
class DatetimePlugin : public QObject, PluginsItemInterface class DatetimePlugin : public QObject, PluginsItemInterface
{ {
Q_OBJECT Q_OBJECT
@ -13,8 +14,17 @@ class DatetimePlugin : public QObject, PluginsItemInterface
public: public:
explicit DatetimePlugin(QObject *parent = 0); explicit DatetimePlugin(QObject *parent = 0);
~DatetimePlugin();
const QString name(); const QString name();
QWidget *centeralWidget();
private slots:
void refershTime();
private:
QLabel *m_timeLabel;
QTimer *m_refershTimer;
}; };
#endif // DATETIMEPLUGIN_H #endif // DATETIMEPLUGIN_H