Qt:Документация 4.3.2/activeqt-comapp-main-cpp
Материал из Wiki.crossplatform.ru
Внимание: Актуальная версия перевода документации находится здесь |
__NOTOC__
Главная · Все классы · Основные классы · Классы по группам · Модули · Функции |
[править] main.cpp Example File
activeqt/comapp/main.cpp
/**************************************************************************** ** ** Copyright (C) 2003-2007 Trolltech ASA. All rights reserved. ** ** This file is part of the example classes 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://trolltech.com/products/qt/licenses/licensing/opensource/ ** ** If you are unsure which license is appropriate for your use, please ** review the following information: ** http://trolltech.com/products/qt/licenses/licensing/licensingoverview ** or contact the sales department at sales@trolltech.com. ** ** In addition, as a special exception, Trolltech gives you certain ** additional rights. These rights are described in the Trolltech GPL ** Exception version 1.0, which can be found at ** http://www.trolltech.com/products/qt/gplexception/ and in the file ** GPL_EXCEPTION.txt in this package. ** ** In addition, as a special exception, Trolltech, as the sole copyright ** holder for Qt Designer, grants users of the Qt/Eclipse Integration ** plug-in the right for the Qt/Eclipse Integration to link to ** functionality provided by Qt Designer and its related libraries. ** ** Trolltech reserves all rights not expressly granted herein. ** ** Trolltech ASA (c) 2007 ** ** 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 <QApplication> #include <QAxFactory> #include <QTabWidget> #include <QTimer> class Application; class DocumentList; class Document : public QObject { Q_OBJECT Q_CLASSINFO("ClassID", "{2b5775cd-72c2-43da-bc3b-b0e8d1e1c4f7}") Q_CLASSINFO("InterfaceID", "{2ce1761e-07a3-415c-bd11-0eab2c7283de}") Q_PROPERTY(Application *application READ application) Q_PROPERTY(QString title READ title WRITE setTitle) public: Document(DocumentList *list); ~Document(); Application *application() const; QString title() const; void setTitle(const QString &title); private: QWidget *page; }; class DocumentList : public QObject { Q_OBJECT Q_CLASSINFO("ClassID", "{496b761d-924b-4554-a18a-8f3704d2a9a6}") Q_CLASSINFO("InterfaceID", "{6c9e30e8-3ff6-4e6a-9edc-d219d074a148}") Q_PROPERTY(Application* application READ application) Q_PROPERTY(int count READ count) public: DocumentList(Application *application); int count() const; Application *application() const; public slots: Document *addDocument(); Document *item(int index) const; private: QList<Document*> list; }; class Application : public QObject { Q_OBJECT Q_CLASSINFO("ClassID", "{b50a71db-c4a7-4551-8d14-49983566afee}") Q_CLASSINFO("InterfaceID", "{4a427759-16ef-4ed8-be79-59ffe5789042}") Q_CLASSINFO("RegisterObject", "yes") Q_PROPERTY(DocumentList* documents READ documents) Q_PROPERTY(QString id READ id) Q_PROPERTY(bool visible READ isVisible WRITE setVisible) public: Application(QObject *parent = 0); DocumentList *documents() const; QString id() const { return objectName(); } void setVisible(bool on); bool isVisible() const; QTabWidget *window() const { return ui; } public slots: void quit(); private: DocumentList *docs; QTabWidget *ui; }; Document::Document(DocumentList *list) : QObject(list) { QTabWidget *tabs = list->application()->window(); page = new QWidget(tabs); page->setWindowTitle("Unnamed"); tabs->addTab(page, page->windowTitle()); page->show(); } Document::~Document() { delete page; } Application *Document::application() const { return qobject_cast<DocumentList*>(parent())->application(); } QString Document::title() const { return page->windowTitle(); } void Document::setTitle(const QString &t) { page->setWindowTitle(t); QTabWidget *tabs = application()->window(); int index = tabs->indexOf(page); tabs->setTabText(index, page->windowTitle()); } DocumentList::DocumentList(Application *application) : QObject(application) { } Application *DocumentList::application() const { return qobject_cast<Application*>(parent()); } int DocumentList::count() const { return list.count(); } Document *DocumentList::item(int index) const { if (index >= list.count()) return 0; return list.at(index); } Document *DocumentList::addDocument() { Document *document = new Document(this); list.append(document); return document; } Application::Application(QObject *parent) : QObject(parent), ui(0) { ui = new QTabWidget; setObjectName("From QAxFactory"); docs = new DocumentList(this); } DocumentList *Application::documents() const { return docs; } void Application::setVisible(bool on) { ui->setShown(on); } bool Application::isVisible() const { return ui->isVisible(); } void Application::quit() { delete docs; docs = 0; delete ui; ui = 0; QTimer::singleShot(0, qApp, SLOT(quit())); } #include "main.moc" QAXFACTORY_BEGIN("{edd3e836-f537-4c6f-be7d-6014c155cc7a}", "{b7da3de8-83bb-4bbe-9ab7-99a05819e201}") QAXCLASS(Application) QAXTYPE(Document) QAXTYPE(DocumentList) QAXFACTORY_END() int main(int argc, char **argv) { QApplication app(argc, argv); app.setQuitOnLastWindowClosed(false); // started by COM - don't do anything if (QAxFactory::isServer()) return app.exec(); // started by user Application appobject(0); appobject.setObjectName("From Application"); QAxFactory::startServer(); QAxFactory::registerActiveObject(&appobject); appobject.setVisible(true); QObject::connect(qApp, SIGNAL(lastWindowClosed()), &appobject, SLOT(quit())); return app.exec(); }
Если у вас есть перевод, то его можно выложить в Перевод Qt документации на русский язык...
Copyright © 2007 Trolltech | Trademarks | Qt 4.3.2
|