📄 versiondialog.cpp
字号:
/******************************************************************************** Copyright (C) 2005-2006 Trolltech ASA. All rights reserved.**** This file is part of the Qt Designer of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file. Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#include <QtCore/QVector>#include <QtGui/QMouseEvent>#include <QtGui/QGridLayout>#include <QtGui/QLabel>#include <QtGui/QPushButton>#include <QtGui/QPainter>#include <QtGui/QPainterPath>#include <QtGui/QStyleOption>#include "versiondialog.h"class VersionLabel : public QLabel{ Q_OBJECTpublic: VersionLabel(QWidget *parent = 0);signals: void triggered();protected: void mousePressEvent(QMouseEvent *me); void mouseMoveEvent(QMouseEvent *me); void mouseReleaseEvent(QMouseEvent *me); void paintEvent(QPaintEvent *pe);private: QVector<QPoint> hitPoints; QVector<QPoint> missPoints; QPainterPath m_path; bool secondStage; bool m_pushed;};VersionLabel::VersionLabel(QWidget *parent) : QLabel(parent), secondStage(false), m_pushed(false){ setPixmap(QPixmap(":/trolltech/designer/images/designer.png")); hitPoints.append(QPoint(56, 25)); hitPoints.append(QPoint(29, 55)); hitPoints.append(QPoint(56, 87)); hitPoints.append(QPoint(82, 55)); hitPoints.append(QPoint(58, 56)); secondStage = false; m_pushed = false;}void VersionLabel::mousePressEvent(QMouseEvent *me){ if (me->button() == Qt::LeftButton) { if (!secondStage) { m_path = QPainterPath(me->pos()); } else { m_pushed = true; update(); } }}void VersionLabel::mouseMoveEvent(QMouseEvent *me){ if (me->buttons() & Qt::LeftButton) if (!secondStage) m_path.lineTo(me->pos());}void VersionLabel::mouseReleaseEvent(QMouseEvent *me){ if (me->button() == Qt::LeftButton) { if (!secondStage) { m_path.lineTo(me->pos()); bool gotIt = true; QPoint pt; foreach(pt, hitPoints) { if (!m_path.contains(pt)) { gotIt = false; break; } } if (gotIt) { foreach(pt, missPoints) { if (m_path.contains(pt)) { gotIt = false; break; } } } if (gotIt && !secondStage) { secondStage = true; m_path = QPainterPath(); update(); } } else { m_pushed = false; update(); emit triggered(); } }}void VersionLabel::paintEvent(QPaintEvent *pe){ if (secondStage) { QPainter p(this); QStyleOptionButton opt; opt.init(this); if (!m_pushed) opt.state |= QStyle::State_Raised; else opt.state |= QStyle::State_Sunken; opt.state &= ~QStyle::State_HasFocus; style()->drawControl(QStyle::CE_PushButtonBevel, &opt, &p, this); } QLabel::paintEvent(pe);}VersionDialog::VersionDialog(QWidget *parent) : QDialog(parent#ifdef Q_WS_MAC , Qt::Tool#endif ){ QGridLayout *layout = new QGridLayout(this); VersionLabel *label = new VersionLabel(this); QLabel *lbl = new QLabel(this); lbl->setText(tr("<h3>%1</h3>" "<br/><br/>Version %2"#if QT_EDITION == QT_EDITION_OPENSOURCE " Open Source Edition"#endif "<br/>Qt Designer is a graphical user interface designer " "for Qt applications.<br/><br/>"#if QT_EDITION == QT_EDITION_OPENSOURCE "This version of Qt Designer is part of the Qt Open Source Edition, for use " "in the development of Open Source applications. " "Qt is a comprehensive C++ framework for cross-platform application " "development.<br/><br/>" "You need a commercial Qt license for development of proprietary (closed " "source) applications. Please see <tt>http://www.trolltech.com/company/model" ".html</tt> for an overview of Qt licensing.<br/>"#else "This program is licensed to you under the terms of the " "Qt Commercial License Agreement. For details, see the file LICENSE " "that came with this software distribution.<br/>"#endif "<br/>Copyright 2000-2006 Trolltech ASA. All rights reserved." "<br/><br/>The program is provided AS IS with NO WARRANTY OF ANY KIND," " INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A" " PARTICULAR PURPOSE.<br/> ").arg(tr("Qt Designer")) .arg(QLatin1String(QT_VERSION_STR))); lbl->setWordWrap(true); QPushButton *cmd = new QPushButton("OK", this); cmd->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); cmd->setDefault(true); connect(cmd, SIGNAL(clicked()), this, SLOT(reject())); connect(label, SIGNAL(triggered()), this, SLOT(accept())); layout->addWidget(label, 0, 0, 1, 1); layout->addWidget(lbl, 0, 1, 4, 4); layout->addWidget(cmd, 4, 2, 1, 1);}VersionDialog::~VersionDialog(){}#include "versiondialog.moc"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -