formwindow.h
来自「奇趣公司比较新的qt/emd版本」· C头文件 代码 · 共 356 行
H
356 行
/******************************************************************************** Copyright (C) 1992-2007 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://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.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#ifndef FORMWINDOW_H#define FORMWINDOW_H#include "formeditor_global.h"#include <formwindowbase_p.h>// Qt#include <QtCore/QHash>#include <QtCore/QList>#include <QtCore/QMap>#include <QtCore/QSet>class QDesignerDnDItemInterface;class DomConnections;class QWidget;class QLabel;class QTimer;class QAction;class QMenu;class QUndoStack;class QRubberBand;namespace qdesigner_internal {class FormEditor;class FormWindowCursor;class WidgetEditorTool;class FormWindowWidgetStack;class FormWindowManager;class FormWindowDnDItem;class SetPropertyCommand;class BreakLayoutCommand;class QT_FORMEDITOR_EXPORT FormWindow: public FormWindowBase{ Q_OBJECTpublic: FormWindow(FormEditor *core, QWidget *parent = 0, Qt::WindowFlags flags = 0); virtual ~FormWindow(); virtual QDesignerFormEditorInterface *core() const; virtual QDesignerFormWindowCursorInterface *cursor() const; virtual int toolCount() const; virtual int currentTool() const; virtual void setCurrentTool(int index); virtual QDesignerFormWindowToolInterface *tool(int index) const; virtual void registerTool(QDesignerFormWindowToolInterface *tool); virtual QString author() const; virtual void setAuthor(const QString &author); virtual QString comment() const; virtual void setComment(const QString &comment); virtual void layoutDefault(int *margin, int *spacing); virtual void setLayoutDefault(int margin, int spacing); virtual void layoutFunction(QString *margin, QString *spacing); virtual void setLayoutFunction(const QString &margin, const QString &spacing); virtual QString pixmapFunction() const; virtual void setPixmapFunction(const QString &pixmapFunction); virtual QString exportMacro() const; virtual void setExportMacro(const QString &exportMacro); virtual QStringList includeHints() const; virtual void setIncludeHints(const QStringList &includeHints); virtual QString fileName() const; virtual void setFileName(const QString &fileName); virtual QString contents() const; virtual void setContents(const QString &contents); virtual void setContents(QIODevice *dev); virtual QDir absoluteDir() const; virtual void simplifySelection(QWidgetList *sel) const; virtual void ensureUniqueObjectName(QObject *object); virtual QWidget *mainContainer() const; void setMainContainer(QWidget *mainContainer); bool isMainContainer(const QWidget *w) const; QWidget *currentWidget() const; virtual QSize sizeHint() const; bool hasInsertedChildren(QWidget *w) const; QList<QWidget *> selectedWidgets() const; void clearSelection(bool changePropertyDisplay=true); bool isWidgetSelected(QWidget *w) const; void selectWidget(QWidget *w, bool select=true); void selectWidgets(); void repaintSelection(); void updateSelection(QWidget *w); void updateChildSelections(QWidget *w); void raiseChildSelections(QWidget *w); void raiseSelection(QWidget *w); void hideSelection(QWidget *w); inline const QList<QWidget *>& widgets() const { return m_widgets; } inline int widgetCount() const { return m_widgets.count(); } inline QWidget *widgetAt(int index) const { return m_widgets.at(index); } QList<QWidget *> widgets(QWidget *widget) const; QWidget *createWidget(DomUI *ui, const QRect &rect, QWidget *target); bool isManaged(QWidget *w) const; void manageWidget(QWidget *w); void unmanageWidget(QWidget *w); inline QUndoStack *commandHistory() const { return m_commandHistory; } void beginCommand(const QString &description); void endCommand(); bool blockSelectionChanged(bool blocked); void emitSelectionChanged(); bool unify(QObject *w, QString &s, bool changeIt); bool isDirty() const; void setDirty(bool dirty); static FormWindow *findFormWindow(QWidget *w); virtual QWidget *containerAt(const QPoint &pos); virtual QWidget *widgetAt(const QPoint &pos); virtual void highlightWidget(QWidget *w, const QPoint &pos, HighlightMode mode = Highlight); void updateOrderIndicators(); bool handleEvent(QWidget *widget, QWidget *managedWidget, QEvent *event); QStringList resourceFiles() const; void addResourceFile(const QString &path); void removeResourceFile(const QString &path); void resizeWidget(QWidget *widget, const QRect &geometry); bool dropWidgets(const QList<QDesignerDnDItemInterface*> &item_list, QWidget *target, const QPoint &global_mouse_pos); virtual QWidget *findContainer(QWidget *w, bool excludeLayout) const; // for WidgetSelection only. QWidget *designerWidget(QWidget *w) const; // Initialize and return a popup menu for a managed widget QMenu *initializePopupMenu(QWidget *managedWidget); bool eventFilter(QObject *watched, QEvent *event);signals: void contextMenuRequested(QMenu *menu, QWidget *widget);public slots: void deleteWidgets(); void raiseWidgets(); void lowerWidgets(); void copy(); void cut(); void paste(); void selectAll(); void layoutHorizontal(); void layoutVertical(); void layoutGrid(); void layoutHorizontalSplit(); void layoutVerticalSplit(); void layoutHorizontalContainer(QWidget *w); void layoutVerticalContainer(QWidget *w); void layoutGridContainer(QWidget *w); void breakLayout(QWidget *w); void editContents();protected: virtual QMenu *createPopupMenu(QWidget *w); virtual void resizeEvent(QResizeEvent *e); void insertWidget(QWidget *w, const QRect &rect, QWidget *target, bool already_in_form = false);private slots: void selectionChangedTimerDone(); void updateDirty(); void checkSelection(); void checkSelectionNow();private: void init(); void initializeCoreTools(); int getValue(const QRect &rect, int key, bool size) const; int calcValue(int val, bool forward, bool snap, int snapOffset) const; QRect applyValue(const QRect &rect, int val, int key, bool size) const; bool frameNeeded(QWidget *w) const; enum RectType { Insert, Rubber }; void startRectDraw(const QPoint &global, QWidget *, RectType t); void continueRectDraw(const QPoint &global, QWidget *, RectType t); void endRectDraw(); QWidget *containerAt(const QPoint &pos, QWidget *notParentOf); void checkPreviewGeometry(QRect &r); void finishContextMenu(QWidget *w, QWidget *menuParent, QContextMenuEvent *e); bool handleContextMenu(QWidget *widget, QWidget *managedWidget, QContextMenuEvent *e); bool handleMouseButtonDblClickEvent(QWidget *widget, QWidget *managedWidget, QMouseEvent *e); bool handleMousePressEvent(QWidget *widget, QWidget *managedWidget, QMouseEvent *e); bool handleMouseMoveEvent(QWidget *widget, QWidget *managedWidget, QMouseEvent *e); bool handleMouseReleaseEvent(QWidget *widget, QWidget *managedWidget, QMouseEvent *e); bool handleKeyPressEvent(QWidget *widget, QWidget *managedWidget, QKeyEvent *e); bool handleKeyReleaseEvent(QWidget *widget, QWidget *managedWidget, QKeyEvent *e); bool isCentralWidget(QWidget *w) const; bool setCurrentWidget(QWidget *currentWidget); bool trySelectWidget(QWidget *w, bool select); BreakLayoutCommand *breakLayoutCommand(QWidget *w); void setCursorToAll(const QCursor &c, QWidget *start); QPoint mapToForm(const QWidget *w, const QPoint &pos) const; bool canBeBuddy(QWidget *w) const; QWidget *findTargetContainer(QWidget *widget) const; bool isPageOfContainerWidget(const QWidget *widget) const; void clearMainContainer(); static int widgetDepth(const QWidget *w); static bool isChildOf(const QWidget *c, const QWidget *p); void editWidgets(); void updateWidgets(); void handleArrowKeyEvent(int key, Qt::KeyboardModifiers modifiers);private: FormEditor *m_core; FormWindowCursor *m_cursor; QWidget *m_mainContainer; QWidget *m_currentWidget; bool m_blockSelectionChanged; bool m_drawRubber; QPoint m_rectAnchor; QRect m_currRect; QWidgetList m_widgets; QSet<QWidget*> m_insertedWidgets; class Selection; Selection *m_selection; QPoint m_startPos; QUndoStack *m_commandHistory; QString m_fileName; typedef QPair<QPalette ,bool> PaletteAndFill; typedef QMap<QWidget*, PaletteAndFill> WidgetPaletteMap; WidgetPaletteMap m_palettesBeforeHighlight; QRubberBand *m_rubberBand; QTimer *m_selectionChangedTimer; QTimer *m_checkSelectionTimer; QTimer *m_geometryChangedTimer; int m_dirty; int m_lastIndex; FormWindowWidgetStack *m_widgetStack; WidgetEditorTool *m_widgetEditor; QStringList m_resourceFiles; QString m_comment; QString m_author; QString m_pixmapFunction; int m_defaultMargin, m_defaultSpacing; QString m_marginFunction, m_spacingFunction; QString m_exportMacro; QStringList m_includeHints; QList<SetPropertyCommand*> m_moveSelection; int m_lastUndoIndex; bool m_dblClicked;private: friend class WidgetEditorTool;};} // namespace qdesigner_internal#endif // FORMWINDOW_H
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?