⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kcontainer.h

📁 PIXIL is a small footprint operating environment, complete with PDA PIM applications, a browser and
💻 H
字号:
/* This file is part of the KDE libraries    Copyright (C) 1998 Jorge Monteiro <jomo@casema.net>    This library is free software; you can redistribute it and/or    modify it under the terms of the GNU Library General Public    License as published by the Free Software Foundation; either    version 2 of the License, or (at your option) any later version.    This library is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU    Library General Public License for more details.    You should have received a copy of the GNU Library General Public License    along with this library; see the file COPYING.LIB.  If not, write to    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,    Boston, MA 02111-1307, USA.*/#ifndef __KCONTAINER_H__#define __KCONTAINER_H__#include <qframe.h>#include <qlist.h>/** * KContainerLayoutItem is a internal class used by KConatinerLayout  * @see KContainerLayout * This class represents one widget inside the one KContainerLayout *  * @short KContainerLayoutItem * @internal * @author Jorge Monteiro <jomo@casema.net> * @version 0.1 */class KContainerLayoutItem{public:    /**     * Creates one KContIem     *     * @param w The widget associated with this KContainerLayoutItem     * @param e Expand will make the widget to use all space alocated to it     * @param f Fill will make the widget be sized to ocupy all the space allocated to it. Only makes sense with expand = TRUE     * @param p Padding is the size the widget will use as borders on both sides of the space allocated to it.     */    KContainerLayoutItem(QWidget *w,bool e=FALSE,bool f=FALSE,int p=0)    {	_widget = w;	_expand = e;	_fill = f;	_padding = p;    }    void setExpand(bool b)		{ _expand = b; }    void setFill(bool b)		{ _fill = b; }    void setPadding(int i)		{ _padding = i; }    QWidget *widget()			{ return _widget; }    const bool expand() const		{ return _expand; }    const bool fill() const		{ return _fill; }    const int padding() const		{ return _padding; }protected:    QWidget *_widget;    bool _expand;    bool _fill;    int _padding;};/** * KContainerLayout is a class that will manage layout of it's child widgets. * Here is an example of using this class: * *  * @short KContainerLayout is a class that will manage layout of it's child widgets. * @author Jorge Monteiro <jomo@casema.net> * @version 0.1 */class KContainerLayout : public QFrame{Q_OBJECTpublic:enum { Horizontal = 0, Vertical };    /**     * Constructs a KContainerLayout as child of parent     *      * @param parent The parent widget of the KContainerLayout     * @param name The name of the widget     * @param orientation The orientation of the container, either KContainerLayout::Horizontal or KContainer::Vertical     * @param homogeneous If the container should split available size by all KContainerLayoutItem in equal parts     * @param spacing The space to add between each widget and between the first/last and the borders     * @param f Flags @see QFrame#QFrame     * @param allowLines Flags @see QFrame#QFrame     */    KContainerLayout(QWidget * parent=0, const char * name=0,     		int orientation = KContainerLayout::Horizontal,		bool homogeneos = FALSE,		int spacing = 5, WFlags f=0, bool allowLines=TRUE);    /**     * The destructor     */    virtual ~KContainerLayout();    /**     * Returns the number of widgets inside this container     */    int getNumberOfWidgets() const;    /**     * Pack one widget to the start of the container after the previously packed on start widgets     * @param w The widget to be packed     * @param e If the widget should use the whole size allocated to it     * @param f If the widget should be sized to fill the whole space allocated to it (only makes sense with Expand=TRUE)     * @param p Padding that should be used as the borders in each side of the widget     */    int packStart(QWidget *w, bool e=FALSE, bool f=FALSE,int p=1);    /**     * Pack one widget to the end of the container after the previously packed on end widgets     * @param w The widget to be packed     * @param e If the widget should use the whole size allocated to it     * @param f If the widget should be sized to fill the whole space allocated to it (only makes sense with Expand=TRUE)     * @param p Padding that should be used as the borders in each side of the widget     */    int packEnd(QWidget *w, bool e=FALSE, bool f=FALSE,int p=1);    /**     * Sets the orientation of the container, one of KContainerLayout::Horizontal or KContainer::Vertical     */    void setOrientation(int i);    /**     * Sets the container to use the same size to each widget he contains (TRUE) or not (FALSE)     * When homogeneous is true all widgets will be packed as if they had the Expand set to TRUE @see KContainerLayout#packStart @see KContainer#packEnd     */    void setHomogeneos(bool b);    /*     * Sets the space to be used between each widget and between the first/last widget and the container borders     */    void setSpacing(int i);    /**     * Sets the starting offset for this container @see _startOffset     */    void setStartOffset(int i);    /**     * Sets the ending offset for this container @see _endOffset     */    void setEndOffset(int i);    /**     * Returns the current orientation of the container @see KContainerLayout#setOrientation     */    const int orientation() const	{ return _orientation; }    /**     * Returns the current homogeneous state of the container @see KContainerLayout#setHomogeneous     */    const bool homogeneos() const	{ return _homogeneos; }    /**     * Returns the current spacing of the container @see KContainerLayout#setSpacing     */    const int spacing() const		{ return _spacing; }    /**     * Returns the starting offset for this container @see _startOffset     */    const int startOffset() const	{ return _startOffset; }    /**     * Returns the ending offset for this container @see _endOffset     */    const int endOffset() const		{ return _endOffset; }    /**     * Resizes the container to be as small as necessary to display all widgets     */    void sizeToFit();protected:    /**     * Calculates the size necessary to display all widgets     */    void recalcLayout();    /**     * Returns the size necessary for the widget represented by this KContainerLayoutItem     */    QSize widgetSize(KContainerLayoutItem *item)    {	QSize sz = item->widget()->sizeHint();	if (!sz.isValid())	   // well, some widgets will not return sizeHint()	    sz = QSize(50,25); 	return sz;    }    /**     * Reposition all widgets on the container.     */    void repositionWidgets();    /**     * Returns the number of widgets that share the extra space on the container.     */    int numberOfWidgetsWithExpand();    /**     * Calculate our size hint based on the sizeHint() of all out widgets,     * on our properties - expand and homogeneous, and on the KContainerLayoutItem      * properties.     * @see KContainerLayoutItem @see packStart @see packEnd     */    void calculateSizeHint();    /**     * Return the size necessary by the largest widget on the container.     */    QSize sizeOfLargerWidget();    /**     * Returns the ideal size for the widget represented by this KContainerLayoutItem.     */    QSize idealSizeOfWidget(KContainerLayoutItem *item);    /**     * Return TRUE if this is an horizontal container.     */    const bool horizontal() const 		{ return (_orientation == KContainerLayout::Horizontal); }    /**     * Resizes the widget and repositions all widgets.     */    virtual void resizeEvent(QResizeEvent *ev);    /**     * Used to filter resize events from our parent if it isn't a KContainerLayout.     */    virtual bool eventFilter(QObject *, QEvent *ev);    /**     * Returns our size hint. The size necessary to display this container.     */    virtual QSize sizeHint() const;    /**     * Keeps the orientation of the container one of     * KContainerLayout::Horizontal or KContainer::Vertical     */    int _orientation;    /**     * Should we split our size in equal parts by all the widgets?     */     bool _homogeneos;    /**     * Space to be used between widgets and between the first/last widget and     * the container borders.     */    int _spacing;    /**     * Space between the starting border and the first widget     */    int _startOffset;    /**     * Space between the last widget and ending border     */    int _endOffset;    /**     * The list of all widgets packed on the start     */    QList<KContainerLayoutItem> _startWidgets;    /**     * The list of all widgets packed at the end     */    QList<KContainerLayoutItem> _endWidgets;    /**     * width or height we have for each widget     */    int _sizeForEach;	    /**     * our sizeHint that we will return on our implementation of sizeHint()     */    QSize _sizeHint;};#endif // __KCONTAINER_H__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -