当前位置: 代码迷 >> QT开发 >> 怎么运行QT助手的Custom Widget Plugin Example
  详细解决方案

怎么运行QT助手的Custom Widget Plugin Example

热度:726   发布时间:2016-04-25 04:54:54.0
如何运行QT助手的Custom Widget Plugin Example
在 qt助手中有个叫Custom Widget Plugin Example的程序,我想运行一下,就简单地建立每个头文件,资源文件,然后将代码拷贝到相应的文件中,在qt creator中无发运行,个文件如下:
analogclock.h
#ifndef ANALOGCLOCK_H
 #define ANALOGCLOCK_H
#include <QWidget>
 #include <QtDesigner/QDesignerExportWidget>
 class QDESIGNER_WIDGET_EXPORT AnalogClock : public QWidget
 {
  Q_OBJECT

 public:
  AnalogClock(QWidget *parent = 0);

 protected:
  void paintEvent(QPaintEvent *event);
 };
 #endif


analogclock.cpp
#include <QtGui>
#include "analogclock.h"
AnalogClock::AnalogClock(QWidget *parent)
  : QWidget(parent)
{
  QTimer *timer = new QTimer(this);
  connect(timer, SIGNAL(timeout()), this, SLOT(update()));
  timer->start(1000);

  setWindowTitle(tr("Analog Clock"));
  resize(200, 200);
}

void AnalogClock::paintEvent(QPaintEvent *)
{
  static const QPoint hourHand[3] = {
  QPoint(7, 8),
  QPoint(-7, 8),
  QPoint(0, -40)
  };
  static const QPoint minuteHand[3] = {
  QPoint(7, 8),
  QPoint(-7, 8),
  QPoint(0, -70)
  };

  QColor hourColor(127, 0, 127);
  QColor minuteColor(0, 127, 127, 191);

  int side = qMin(width(), height());
  QTime time = QTime::currentTime();

  QPainter painter(this);
  painter.setRenderHint(QPainter::Antialiasing);
  painter.translate(width() / 2, height() / 2);
  painter.scale(side / 200.0, side / 200.0);

  painter.setPen(Qt::NoPen);
  painter.setBrush(hourColor);

  painter.save();
  painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0)));
  painter.drawConvexPolygon(hourHand, 3);
  painter.restore();

  painter.setPen(hourColor);

  for (int i = 0; i < 12; ++i) {
  painter.drawLine(88, 0, 96, 0);
  painter.rotate(30.0);
  }

  painter.setPen(Qt::NoPen);
  painter.setBrush(minuteColor);

  painter.save();
  painter.rotate(6.0 * (time.minute() + time.second() / 60.0));
  painter.drawConvexPolygon(minuteHand, 3);
  painter.restore();

  painter.setPen(minuteColor);

  for (int j = 0; j < 60; ++j) {
  if ((j % 5) != 0)
  painter.drawLine(92, 0, 96, 0);
  painter.rotate(6.0);
  }
}


customwidgetplugin.h
#ifndef CUSTOMWIDGETPLUGIN_H
 #define CUSTOMWIDGETPLUGIN_H

 #include <QDesignerCustomWidgetInterface>

 class AnalogClockPlugin : public QObject, public QDesignerCustomWidgetInterface
 {
  Q_OBJECT
  Q_INTERFACES(QDesignerCustomWidgetInterface)

 public:
  AnalogClockPlugin(QObject *parent = 0);

  bool isContainer() const;
  bool isInitialized() const;
  QIcon icon() const;
  QString domXml() const;
  QString group() const;
  QString includeFile() const;
  QString name() const;
  QString toolTip() const;
  QString whatsThis() const;
  QWidget *createWidget(QWidget *parent);
  void initialize(QDesignerFormEditorInterface *core);

 private:
  bool initialized;
 };
#endif


customwidgetplugin.cpp
#include "analogclock.h"
  相关解决方案