LIULIANG

QT安装时出现的问题

在安装QT时,会提示没有安装C++/c编译器,(就是下面的这句英文)
You need a C++ compiler. Please install it using the System Package Management tools.
所以我们要手动安装一个C++/C编译器,否则就会出现出现不能新建桌面应用程序,所以在安装QT之前我们要
首先安装一个C++/C编译器,这个很简单,使用下面的命令就可以安装
 sudo apt-get install build-essential  
安装了该软件包,编译c/c++所需要的软件包也都会被安装。因此如果想在Ubuntu中编译c/c++程序,只需要安装该软件包就可以了。
然后在安装QT就行了,
1. 下载Qt_SDK_Lin32_offline_v1_1_4_en.run

2、chmod u+x Qt_SDK_Lin32_offline_v1_1_4_en.run

3、sudo ./Qt_SDK_Lin32_offline_v1_1_4_en.run

注意别搞错权限了就打不开了
这些命令要到Qt_SDK_Lin32_offline_v1_1_4_en.run所在路径下执行
再安装好后。老是出现Unable to locate theme engine in module_path: "pixmap"毛病
解决Unable to locate theme engine in module_path: "pixmap"
Gtk-WARNING **: Unable to locate theme engine in module_path: "pixmap"
纳闷老是弹这东东出来,虽然。。。貌似不影响什么,可是看着不爽
装下那个engines就好了,就那么一行。。。
sudo apt-get install gtk2-engines-pixbuf
(在ubuntu 11.10下没发现有gtk3的。。不过装了这一样再没提示了)

posted @ 2012-05-05 14:52 BIG森林 阅读(531) | 评论 (0)编辑 收藏

Eclipse 报 “Exception in thread "main" java.lang.OutOfMemoryError: Java heap space ”错误的解决办法

1、打开Eclipse软件,选择菜单栏run,在二级菜单中选择 Debug Configurations...  项,如下图所示。

 

 

2、在弹出的窗口中选择 (x)=Arguments 选项卡,VM arguments 输入框中输入所需要的内存最大占用量,我这里输入的是800兆。最后点击Apply按钮即可。

 

 

【附】MyEclipse的设置地址在run--->Open Run Dialog--->Arguments

 

转自:http://www.cnblogs.com/sishierfei/archive/2010/03/19/1689511.html

posted @ 2012-04-30 09:13 BIG森林 阅读(222) | 评论 (0)编辑 收藏

jxl读取excel文件操作

     摘要: 在进行测试之前,首先在网上下载jxl.jar文件,放到classpath路径下或者放到你的工程中(效果一样,其实就是要在classpath能够找到这个jar包)好了,下面现在开始做例子第一步:创建excel文件 CreateExcel.java[java] view plaincopyprint?<pre name="code" class="java">...  阅读全文

posted @ 2012-04-23 23:16 BIG森林 阅读(564) | 评论 (0)编辑 收藏

QT QTableWidget 用法总结

     摘要: QTableWidget是QT程序中常用的显示数据表格的空间,很类似于VC、C#中的DataGrid。说到QTableWidget,就必须讲一下它跟QTabelView的区别了。QTableWidget是QTableView的子类,主要的区别是QTableView可以使用自定义的数据模型来显示内容(也就是先要通过setModel来绑定数据源),而QTableWidget则只能使用标准的数据模型,并...  阅读全文

posted @ 2012-04-16 23:34 BIG森林 阅读(814) | 评论 (0)编辑 收藏

Qt 窗体布局

 布局相关对象及简介

窗体上的所有的控件必须有一个合适的尺寸和位置。Qt提供了一些类负责排列窗体上的控件,主要有:QHBoxLayoutQVBoxLayoutQGridLayoutQStackLayout。(布局管理类)这些类简单易用,无论在代码中还是用Qt Designer开发程序都能用到。

Qt 窗体布局 - 黑黑的大鲨鱼 - 黑黑的大鲨鱼

1)         布局类简介

QHBoxLayout:水平布局

QVBoxLayout:垂直布局

QGridLayout 表格布局

QGridLayout::addWidget()语法

layout->addWidget(widget, row, column, rowSpan, columnSpan);

参数widget:为插入到这个布局的子控件;

参数(rowcolumn)为控件占据的左上角单元格位置;

参数rowSpan是控件占据的行数,

参数colunmSpan是控件占据的列的个数。

rowSpancolunmSpan默认值为1

Stacked Layouts:分组布局

     QStackedLayout类把子控件进行分组或者分页,一次只显示一组或者一页,隐藏其他组或者页上的控件。

使用这些Qt布局管理类的另一个原因是,在程序、系统改变字体,语言或者在不同的平台上运行时,布局管理器能够自动调整窗体里所有控件的大小和尺寸。

其他可进行布局管理的类:这些类的共同特点是提供了更加灵活的布局管理,在一定程度上用户能够控制窗体内控件的大小。

QSplitterQScrollAreaQMainWindowQWorkspace(对多文档的支持)

2)         布局管理中结合控件的sizePolicy属性,进行调整

   结合控件的SizePolicy属性,来控制布局管理中的控件的尺寸自适应方式。

控件的sizePolicy说明控件在布局管理中的缩放方式。Qt提供的控件都有一个合理的缺省sizePolicy,但是这个缺省值有时不能适合所有的布局,开发人员经常需要改变窗体上的某些控件的sizePolicy。一个QSizePolicy的所有变量对水平方向和垂直方向都适用。下面列举了一些最长用的值:

A. Fixed:控件不能放大或者缩小,控件的大小就是它的sizeHint

B. Minimum:控件的sizeHint为控件的最小尺寸。控件不能小于这个sizeHint,但是可以

放大。

C. Maximum:控件的sizeHint为控件的最大尺寸,控件不能放大,但是可以缩小到它的最小

的允许尺寸。

D. Preferred:控件的sizeHint是它的sizeHint,但是可以放大或者缩小

E. Expandint:控件可以自行增大或者缩小

注:sizeHint(布局管理中的控件默认尺寸,如果控件不在布局管理中就为无效的值)


1.1.1.       布局管理的三种方式

Qt中有三种方式对窗体上的控件进行布局管理:绝对位置定位(absolute positioning),手工布局(manual layout),布局管理器(layout managers

1.1.1.1.      绝对位置定位(控件布局是固定位置,没有自适应功能)

例子:

QWidget *pWidget = new QWidget;

QLabel label(pWidget);

label.setText(QObject::tr("姓名:"));

label.setGeometry(10,10,20,20);

QLineEdit namedLineEdit("小明",pWidget);

namedLineEdit.setGeometry(35,10,50,20);

QPushButton *btn = new QPushButton(QObject::tr("关闭"),pWidget);

     btn->setGeometry(90,10,40,20);

图例:

Qt 窗体布局 - 黑黑的大鲨鱼 - 黑黑的大鲨鱼

1.1.1.1.      手工布局

给出控件的绝对位置,但是他们的尺寸根据窗口的大小确定,可以通过重写窗体控件的resizeEvent()实现对子控件的大小设置。

1.1.1.1.      布局管理器

例子1运用QHBoxLayoutQVBoxLayoutQGridLayout布局

Qt 窗体布局 - 黑黑的大鲨鱼 - 黑黑的大鲨鱼

//leftLayout布局设置(表格布局)

/* QGridLayout: 二维的单元格*/

     QGridLayout *leftLayout = new QGridLayout;

     leftLayout->addWidget(&namedLabel, 0, 0); //起始(0行,0列),尺寸(1行,1列)

     leftLayout->addWidget(&namedLineEdit, 0, 1);

     leftLayout->addWidget(&lookInLabel, 1, 0);

     leftLayout->addWidget(&lookInLineEdit, 1, 1);

     leftLayout->addWidget(&subDirCheckBox, 2, 0, 1, 2);//起始(3行,0列),尺寸(1行,2列)

     leftLayout->addWidget(&tableWidget, 3, 0, 1, 2);

     leftLayout->addWidget(&messageLabel, 4, 0, 1, 2);

   //rightLayout布局设置(垂直布局)

     QVBoxLayout *rightLayout = new QVBoxLayout;

     rightLayout->addWidget(&findButton);

     rightLayout->addWidget(&stopButton);

     rightLayout->addWidget(&closeButton);

//布局管理器在指定的位置留出一块空间(Qt Designer中,可以加入一个spacer实现这一功能)

     rightLayout->addStretch();

     rightLayout->addWidget(&helpButton);

     //mainLayout布局设置(水平布局)

     QHBoxLayout *mainLayout = new QHBoxLayout;

     mainLayout->addLayout(leftLayout);

     mainLayout->addLayout(rightLayout);

     pWidget->setLayout(mainLayout);//设置Widget窗口控件的布局风格

     pWidget->setWindowTitle(QObject::tr("查找文件及文件夹"));

     

例子1图列:

Qt 窗体布局 - 黑黑的大鲨鱼 - 黑黑的大鲨鱼


1.1.1.1.1.     例子2:运用Stacked Layouts:分组布局

例子:

//创建QWidget类的一个对象pWidget

QWidget *pWidget = new QWidget;

//创建一个布局管理器类 layout

QHBoxLayout *manLayout = new QHBoxLayout;

//左边的列表控件

QListWidget *listWidget = new QListWidget(pWidget);

listWidget->addItem(QObject::tr("外观设置"));

listWidget->addItem(QObject::tr("网页浏览"));

       ...   

//右边的分页控件

QWidget *page1 = new QWidget(pWidget);

<…page1上增加控件>

QWidget *page2 = new QWidget(pWidget);

<…page2上增加控件>

<设置布局管理>

QVBoxLayout *leftLayout = new QVBoxLayout;

leftLayout->addWidget(listWidget);

....

//右边分页布局(两页窗口)

QStackedLayout *stackedLayout = new QStackedLayout;

stackedLayout->addWidget(page1);

stackedLayout->addWidget(page2);

//通过调用QWidget::setLayout()函数,layout布局管理器类添加到窗口部件对象pWidget

manLayout->addLayout(leftLayout);

manLayout->addLayout(stackedLayout);

pWidget->setLayout(manLayout);

listWidget->setCurrentRow(0);

//关联:列表与分组布局

QObject::connect(listWidget, SIGNAL(currentRowChanged(int)),

stackedLayout, SLOT(setCurrentIndex(int)));

pWidget->show();

图例:

Qt 窗体布局 - 黑黑的大鲨鱼 - 黑黑的大鲨鱼

Qt 窗体布局 - 黑黑的大鲨鱼 - 黑黑的大鲨鱼

 

 

posted @ 2012-04-10 23:25 BIG森林 阅读(2336) | 评论 (0)编辑 收藏

QT类继承图

QShared
|---QGLayoutIterator
|          |---QLayoutArrayIterator
|          |---QBoxLayoutIterator
|          |---QToolLayoutIterator
|          |---QMainWindowLayoutIterator
|---QBrushData
|---QDOM_ImplementationPrivate
|---QDOM_NodePrivate
|           |---QDOM_DocumentTypePrivate
|           |---QDOM_DocumentFragmentPrivate
|           |---QDOM_CharacterDataPrivate
|           |                |---QDOM_TextPrivate
|           |                |           |---QDOM_CDATASectionPrivate
|           |                |---QDOM_CommentPrivate
|           |---QDOM_AttrPrivate
|           |---QDOM_ElementPrivate
|           |---QDOM_NotationPrivate
|           |---QDOM_EntityPrivate
|           |---QDOM_EntityReferencePrivate
|           |---QDOM_ProcessingInstructionPrivate
|           |---QDOM_DocumentPrivate
|---QDOM_NodeListPrivate
|---QDOM_NamedNodeMapPrivate
|---QFontData
|---array_data
|---QGuardedPtrPrivate
|---QImageData
|---QMapPrivateBase
|          |---QMapPrivate
|---QMemoryManagerFont
|---QSMCacheItem
|---QPalData
|---QPenData
|---QPixmapData
|---QRegionData
|---QTextCharFormat
|---QTextCustomItem
|          |---QTextHorizontalLine
|          |---QTextLineBreak
|          |---QTextImage
|          |---QTextTable
|---QSmartPtrPrivate
|---QStringData
|---QValueListPrivate
|---QVariantPrivate
|---QCursorData
|---QIconSetPrivate
|---WhatsThisItem

QLayoutItem  
|---QSpacerItem
|---QWidgetItem
|---QLayout
|---QTextTableCell

QGArray
|---QArray
|      |---QPointArray

QGCacheIterator
|---QAsciiCacheIterator
|---QCacheIterator
|---QIntCacheIterator

QGDictIterator
|---QAsciiDictIterator
|            |---QSignalDictIt
|---QDictIterator
|---QIntDictIterator
|          |---QWidgetIntDictIt
|---QPtrDictIterator

QAsyncIO
|---QDataSink
|---QDataSource
|       |---QIODeviceSource

QTextDecoder
|---QBig5Decoder
|---QEucJpDecoder
|---QEucKrDecoder
|---QGbkDecoder
|---QJisDecoder
|---QSjisDecoder
|---QTextStatelessDecoder
|---QTextCodecFromIODDecoder
|---QUtf8Decoder
|---QUtf16Decoder

QTextCodec
|---QBig5Codec
|---QEucJpCodec
|---QEucKrCodec
|---QGbkCodec
|---QJisCodec
|---QKoi8Codec
|---QHebrewCodec
|         |---QArabicCodec
|---QSjisCodec
|---QWindowsLocalCodec
|---QTextCodecFromIOD
|---QSimpleTextCodec
|---QLatin1Codec
|---QTsciiCodec
|---QUtf8Codec
|---QUtf16Codec

QByteArray
|---QBitArray
|---QCString

Qt
|---QBrush
|---QCanvasItem
|        |---QCanvasSprite
|        |---QCanvasPolygonalItem
|        |           |---QCanvasRectangle
|        |           |---QCanvasPolygon
|        |           |---QCanvasLine
|        |           |---QCanvasEllipse
|        |---QCanvasText
|---QEvent
|      |---QTimerEvent
|      |---QMouseEvent
|      |---QWheelEvent
|      |---QKeyEvent
|      |---QFocusEvent
|      |---QPaintEvent
|      |---QMoveEvent
|      |---QResizeEvent
|      |---QCloseEvent
|      |---QShowEvent
|      |---QHideEvent
|      |---QIMEvent
|      |       |---QIMComposeEvent
|      |---QDragResponseEvent
|      |---QDragLeaveEvent
|      |---QChildEvent
|      |---QCustomEvent
|      |---QDropEvent
|               |---QDragMoveEvent
|               |           |---QDragEnterEvent
|---QGfx//抽象对屏幕具体操作接口
|     |---QGfxRasterBase
|     |          |---QGfxRaster
|     |          |        |---QGfxSNAP
|     |          |        |---QGfxVFb
|     |          |---QDirectPainterGfx
|---QIconViewItem
|---QListViewItem
|          |---File
|          |---QCheckListItem
|          |---Root
|---QCustomMenuItem
|          |---QTearOffMenuItem
|---QObject
|      |---QLayout
|      |      |---QGridLayout
|      |      |---QToolLayout
|      |      |---QMainWindowLayout
|      |      |---QBoxLayout
|      |      |        |---QHBoxLayout
|      |      |        |---QVBoxLayout
|      |---QAccel
|      |---QAction
|      |      |---QActionGroup
|      |---QApplication
|      |---QDataPump
|      |---QCanvas
|      |---QClipboard
|      |---QColorDialogPrivate
|      |---QCopChannel
|      |---QDns
|      |      |---QDnsUgleHack
|      |---QDnsSocket
|      |      |---QDnsManager
|      |---QDragObject
|      |      |---QStoredDrag
|      |---QDragManager
|      |---QFileIconProvider
|      |           |---QWindowsIconProvider
|      |---QGuardedPtrPrivate
|      |---QWSKeyboardHandler
|      |           |---QWSyopyButtonsHandler
|      |           |---QWSVr41xxButtonsHandler
|      |           |---QWSVFbKeyboardHandler
|      |           |---QWSPC101KeyboardHandler
|      |           |             |---QWSTtyKeyboardHandler
|      |           |             |---QWSUsbKeyboardHandler
|      |---QLibraryPrivate
|      |---QNetworkProtocol
|      |          |---QFtp
|      |          |---QLocalFs
|      |---QNetworkOperation
|      |---QNPInstance
|      |---QSenderObject
|      |---QServerSocket
|      |         |---QVNCServer
|      |         |---QWSServerSocket
|      |         |        |---QWSSoundServerSocket
|      |         |        |---QWSServer
|      |---QSessionManager
|      |---QSignalMapper
|      |---QSocket
|      |      |---QWSSocket
|      |      |      |---QWSSoundClient
|      |      |      |---QWSSoundServerClient
|      |---QSocketNotifier
|      |---QSound
|      |---QAuServer
|      |---QWSSoundServer
|      |---QWSServer
|      |       |---QAuServerQWS
|      |---QStyleSheet
|      |---QToolTipGroup
|      |---QTranslator
|      |---QUrlOperator
|      |---QWSInputMethod
|      |---QWSClient
|      |---QWSManager
|      |---QWSServerSignalBridge
|      |---QFrameEventHandler
|      |---QMovieFilePrivate
|      |---QWSSoundServerData
|      |---QThreadPostEventPrivate
|      |---QSingleShotTimer
|      |---QTipManager
|      |---QWhatsThisPrivate
|      |---QWSMouseHandler
|      |         |---QAutoMouseHandler
|      |         |---QWSMouseHandlerPrivate
|      |         |---QYopyTPanelHandlerPrivate
|      |         |---QCustomTPanelHandlerPrivate
|      |         |---QVFbMouseHandlerPrivate
|      |         |---QWSMouseHandlerPrivate
|      |         |---QCalibratedMouseHandler
|      |         |             |---QVrTPanelHandlerPrivate
|      |         |             |---QTPanelHandlerPrivate
|      |         |             |---QTSLibHandlerPrivate
|      |         |             |---QPPTPanelHandlerPrivate
|      |---QValidator
|      |        |---QDoubleValidator
|      |        |---QIntValidator
|      |        |       |---QColIntValidator
|      |---QTimer
|      |      |---QDnsQuery
|      |---QStyle
|      |     |---QCommonStyle
|      |     |         |---QWindowsStyle
|      |     |         |        |---QCompactStyle
|      |     |         |        |---QPlatinumStyle
|      |     |         |---QMotifStyle
|      |     |         |        |---QCDEStyle
|      |     |         |        |---QInterlaceStyle
|      |     |         |        |---QMotifPlusStyle
|      |     |         |        |---QSGIStyle
|      |---QWidget
|      |     |---QButton
|      |     |      |---QCheckBox
|      |     |      |---QPushButton
|      |     |      |---QRadioButton
|      |     |      |---QToolButton
|      |     |      |       |---QWhatsThisButton
|      |     |---QColorLuminancePicker
|      |     |---QColorShower
|      |     |---QComboBox
|      |     |---QDial
|      |     |---QDialog
|      |     |       |---QColorDialog
|      |     |       |---QFileDialog
|      |     |       |---QFontDialog
|      |     |       |---QInputDialog
|      |     |       |---QMessageBox
|      |     |       |---QPrintDialog
|      |     |       |---QTabDialog
|      |     |       |---QWizard
|      |     |---QFDProgressAnimation
|      |     |---QFrame
|      |     |      |---QColorPicker
|      |     |      |---QColorShowLabel
|      |     |      |---QWidgetStack
|      |     |      |---QGrid
|      |     |      |---QGroupBox
|      |     |      |       |---QButtonGroup
|      |     |      |       |         |---QHButtonGroup
|      |     |      |       |         |---QVButtonGroup
|      |     |      |       |---QHGroupBox
|      |     |      |       |---QVGroupBox
|      |     |      |---QHBox
|      |     |      |     |---QVBox
|      |     |      |---QLabel
|      |     |      |      |---QWorkspaceChildTitleButton
|      |     |      |      |---QTipLabel
|      |     |      |---QLCDNumber
|      |     |      |---QMenuBar
|      |     |      |---QSpinBox
|      |     |      |---QPopupMenu
|      |     |      |        |---QComboBoxPopup
|      |     |      |---QProgressBar
|      |     |      |---QSplitter
|      |     |      |---QWorkspaceChildTitleLabel
|      |     |      |---QWorkspaceChild
|      |     |      |---QToolBarSeparator
|      |     |      |---QTableView
|      |     |      |        |---QWellArray
|      |     |      |        |         |---QColorWell
|      |     |      |        |---QMultiLineEdit
|      |     |      |        |         |---QIconViewItemLineEdit
|      |     |      |---QScrollView
|      |     |              |---QCanvasView
|      |     |              |---QIconView
|      |     |              |---QListBox
|      |     |              |       |---QFileListBox
|      |     |              |---QListView
|      |     |              |       |---QFileListView
|      |     |              |---QTable
|      |     |              |---QTextView
|      |     |              |       |---QTextBrowser
|      |     |---QGLWidget
|      |     |---QHeader
|      |     |      |---QTableHeader
|      |     |---QLineEdit
|      |     |       |---QColNumLineEdit
|      |     |       |---QRenameEdit
|      |     |---QMainWindow
|      |     |---QNPWidget
|      |     |---QScrollBar
|      |     |---QSemiModal
|      |     |       |---QFDProgressDialog
|      |     |       |---QProgressDialog
|      |     |---QSizeGrip
|      |     |---QSlider
|      |     |---QStatusBar
|      |     |---QTabBar
|      |     |---QTabWidget
|      |     |---QToolBar
|      |     |---QWorkspaceChildTitleBar
|      |     |---QWorkspace
|      |     |---QETWidget
|      |     |---QShapedPixmapWidget
|      |     |---QAccessWidget
|      |     |---QAlphaWidget
|      |     |---QHideDock
|      |     |---QClipperWidget
|      |     |---QSplitterHandle
|      |     |---QCornerSquare
|      |     |---QTextDetailPopup
|      |     |---QArrowWidget
|      |     |---QFocusDataAccessor
|      |     |---Invisible
|---QPainter
|      |---QDirectPainter
|---QPen
|---QPixmap
|---QStyleSheetItem
|---QTableItem
|---QMutex
|---QThread
|---QWaitCondition
|---QSemaphore
|---QToolTip
|      |---QIconViewToolTip
|      |---QHideToolTip
|---QWhatsThis
|---QWSSoundServer
|---QWSCursor
|---QDialogPrivate

QIODevice
|---QBuffer
|---QFile
|---QSocket
|---QSocketDevice
|---QStringBuffer

QPolygonScanner
|---QCanvasPolygonScanner
|---QGfxRaster

QValueList
|---QCanvasItemList
|---TrieList
|---QStringList
|---QValueStack

QUnknownInterface
|---QLibraryInterface

QDataStream
|---QCopEnvelope

QRangeControl
|---QDial
|---QScrollBar
|---QSlider
|---QSpinBox

QXmlDefaultHandler
|---QDomHandler

QDomNode
|---QDomDocumentType
|---QDomDocument
|---QDomDocumentFragment
|---QDomCharacterData
|             |---QDomText
|             |        |---QDomCDATASection
|             |---QDomComment
|---QDomAttr
|---QDomElement
|---QDomNotation
|---QDomEntity
|---QDomEntityReference
|---QDomProcessingInstruction

QMimeSource
|---QDragObject
|         |---QStoredDrag
|         |        |---QUriDrag
|         |        |---QColorDrag
|         |---QTextDrag
|         |---QImageDrag
|         |---QIconDrag

QEvent,QMimeSource(双继承)
|---QDropEvent
|       |---QDragMoveEvent
|       |           |---QDragEnterEvent

QListBoxItem
|---MCItem
|---QListBoxText
|---QListBoxPixmap

QFontFactory
|---QFontFactoryBDF
|---QFontFactoryFT

QDiskFontPrivate
|---QDiskFontFT

QRenderedFont
|---QRenderedFontFT
|---QRenderedFontBDF

QCollection
|---QGCache
|      |---QIntCache
|      |---QAsciiCache
|      |---QCache
|      |      |---QFontCache
|      |      |---QPMCache
|---QGDict
|      |---QDict
|      |---QCDict
|      |---QPtrDict
|      |---QIntDict
|      |       |---QWidgetIntDict
|      |       |          |---QWidgetMapper
|      |---QAsciiDict
|              |---QObjectDictionary
|              |---QSignalDict
|              |---QMemberDict
|---QGList
|      |---QList
|      |     |---UrlInfoList
|      |     |---QGDItList
|      |     |---QObjectList
|      |     |---QConnectionList
|      |     |---QSortedList
|      |     |---QWidgetList
|      |     |---QButtonList
|---QGVector
|      |---QVector

QBaseBucket
|---QStringBucket
|---QAsciiBucket
|---QIntBucket
|---QPtrBucket

QScreen//显示设备基类,包含显示设备基本描述和操作方式
|---QLinuxFbScreen
|---QSNAPScreen
|---QVFbScreen

QImageFormat
|---QGIFFormat
|---QMNGFormat
|---QPNGFormat

QImageFormatType
|---QGIFFormatType
|---QMNGFormatType
|---QPNGFormatType

QGL
|---QGLFormat
|---QGLContext
|---QGLWidget

QJpUnicodeConv
|---QJpUnicodeConv_Unicode_JISX0201
|---QJpUnicodeConv_Unicode_ASCII
|---QJpUnicodeConv_JISX0221_JISX0201
|---QJpUnicodeConv_JISX0221_ASCII
|---QJpUnicodeConv_Sun
|---QJpUnicodeConv_Microsoft

QGListIterator
|---QListIterator
|         |---QObjectListIt
|         |---QConnectionListIt
|         |---QCListIt
|         |---QWidgetListIt

QMapNodeBase
|---QMapNode

QMenuData
|---QMenuBar
|---QPopupMenu

QNetworkProtocolFactoryBase
|---QNetworkProtocolFactory

QPaintDevice
|---QPicture
|---QPixmap
|      |---QBitmap
|      |---QCanvasPixmap
|      |---QwsPixmap
|---QPrinter
|---QPSPrinter
|---QWidget

QPNGImageWriter
|---QPNGImagePacker

QTextParagraph
|---QRichText

QStrListBase
|---QStrList
|       |---QStrIList

QStrVec
|---QStrVec
|      |---QStrIVec

QTextEncoder
|---QTextStatelessEncoder
|---QUtf16Encoder

QTextStream
|---QTextIStream
|---QTextOStream

QMutexPrivate
|---QRMutexPrivate

QUrl
|---QUrlOperator

QWSCommand
|---QWSIdentifyCommand
|---QWSCreateCommand
|---QWSRegionNameCommand
|---QWSRegionCommand
|---QWSRegionMoveCommand
|---QWSRegionDestroyCommand
|---QWSChangeAltitudeCommand
|---QWSRequestFocusCommand
|---QWSAddPropertyCommand
|---QWSSetPropertyCommand
|---QWSRemovePropertyCommand
|---QWSGetPropertyCommand
|---QWSSetSelectionOwnerCommand
|---QWSConvertSelectionCommand
|---QWSDefineCursorCommand
|---QWSSelectCursorCommand
|---QWSGrabMouseCommand
|---QWSGrabKeyboardCommand
|---QWSPlaySoundCommand
|---QWSQCopRegisterChannelCommand
|---QWSQCopSendCommand
|---QWSSetIMInfoCommand
|---QWSIMMouseCommand
|---QWSResetIMCommand
|---QWSSetIMFontCommand

QWSDecoration
|---QWSDefaultDecoration
|            |---QWSHydroDecoration
|            |---QWSKDE2Decoration
|            |---QWSKDEDecoration
|            |---QWSWindowsDecoration
|            |---QWSBeOSDecoration

QAutoMouseSubHandler
|---QAutoMouseSubHandler_intellimouse
|---QAutoMouseSubHandler_serial
|             |---QAutoMouseSubHandler_mousesystems
|             |---QAutoMouseSubHandler_ms
|---QAutoMouseSubHandler_intellimouse

QXmlReader
|---QXmlSimpleReader

QEffects
|---QAlphaWidget
|---QRollEffect

QString
|---QCIString

QFont
|---QFont_Private

QScreenCursor
|---QVFbScreenCursor

QImageConsumer
|---QImageIOFrameGrabber

QMultiLineEditCommand
|---QBeginCommand
|---QEndCommand
|---QDelTextCmd
|        |---QInsTextCmd

QPSPrinterFontPrivate
|---QPSPrinterFontTTF
|---QPSPrinterFontPFA
|---QPSPrinterFontPFB
|---QPSPrinterFontNotFound
|---QPSPrinterFontAsian
|           |---QPSPrinterFontJapanese
|           |---QPSPrinterFontKorean
|           |---QPSPrinterFontTraditionalChinese
|           |---QPSPrinterFontSimplifiedChinese

QWSSoundServerProvider
|---QWSSoundServerBucket
|---QWSSoundServerStream

 
转载:http://blog.163.com/sxs_solo/blog/static/263333820086410169909/

posted @ 2012-04-10 21:48 BIG森林 阅读(445) | 评论 (0)编辑 收藏

POP3命令列表

一般telnet pop3Server 110后就可以用这些命令了,大小写不敏感,
不包括口令本身,注意不要让口令回显,等验证通过后再允许回显好了。

user username 认可
pass password 认可 执行成功则状态转换
apop name,digest 认可 一种安全传输口令的办法,执行成功导
致状态转换,请参见RFC 1321
stat 处理 请求server回送邮箱统计资料,如邮件数、
邮件总字节数
uidl n 处理 server返回用于该指定邮件的唯一标识,
如果没有指定,返回所有的
list n 处理 server返回指定邮件的大小等
retr n 处理 server返回邮件的全部文本
dele n 处理 server标记删除,quit命令执行时才真正删除
rset 处理 撤消所有的dele命令
top n,m 处理 返回n号邮件的前m行内容,m必须是自然数
noop 处理 server返回一个肯定的响应
quit client希望结束会话。如果server处于'处理'
状态,则现在进入'更新'状态,删除那些标记
成删除的邮件。如果server处于'认可'状态,
则结束会话时server不进入'更新'状态

关于apop命令

如果client使用user命令,口令将是明文。使用apop命令时,client第一次
与server连接时,server向client发送一个ascii码问候,该问候由一个字符
串组成,它对于每个client的连接都是唯一的,client把它的纯文本口令附加
到从server接收到的字符串之后,然后计算结果字符串的MD5摘要,client把
username和MD5摘要作为apop命令的参数一起发送出去。

telnet pop3Server 110
user username
pass ****
stat
list
retr 1
retr 2
...
dele 1
dele 2
...
quit

转自:http://www.douban.com/group/topic/3573819/

posted @ 2012-04-08 11:03 BIG森林 阅读(227) | 评论 (0)编辑 收藏

POP3邮局协议-版本3

     摘要: 1.    简介 对于在网络上的比较小的结点,支持消息传输系统(MTS)是不实际的。例如,一台工作站可能不具有充足的资源允许SMTP服务器和相当的本地邮件传送系统保持序驻留,并持续运行。同样的,将一台个人计算机长时间连接在IP类型网络上的费用也是可观的(结点缺少的资源被称为“联络性”)。 虽然如此,在这样的小结点上允许管理邮件是十分有用的,...  阅读全文

posted @ 2012-04-08 11:02 BIG森林 阅读(253) | 评论 (0)编辑 收藏

java中字符串 MD5密码的加密与验证

  MD5即Message-Digest Algorithm 5(信息-摘要算法 5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。

   将数据(如汉字)运算为另一固定长度值是杂凑算法的基础原理,MD5的前身有MD2、MD3MD4

        本实例介绍用MD5进行加密和验证,将输入字符串通过MD5加密成另一个字符串,而且根据新的字符串无法获得原字符串,但可以在不知道原始密码的情况下进行密码验证。

 

关键技术:

*通过java.security.MessageDigest的静态方法getInstance创建具有指定算法名称的信息摘要,参数为算法名,传入“MD5”则表示将使用MD5算法。

*MessageDigest的digest实例方法使用指定的字节数组对摘要进行最后更新,然后完成摘要计算,返回存放哈希值结果的季节数组,这个数组就是MD5加密产品。

*将加密后的字节数组转换成十六进制的字符窜,形成最终的密码。

*当输入字符串经过MD5加密后,得到的字符串与密码一样,则认为密码验证通过。

 

实例演示:

 1import java.security.MessageDigest;  
 2
 3  
 4public class Password {  
 5    //16进制下数字到字符的映射数组   
 6    private static String[] hexDigits = new String[]{"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};  
 7  
 8    //将inputstr加密   
 9    public static String createPassword(String inputstr)  
10    {  
11        return encodeByMD5(inputstr);  
12    }
  
13  
14    //验证密码是否正确   
15    public static boolean authenticatePassword(String pass , String inputstr)  
16    {  
17        if(pass.equals((encodeByMD5(inputstr))))  
18        {  
19            return true;  
20        }
  
21         else  
22         {  
23             return false;  
24         }
  
25     }
  
26     //对字符串进行MD5编码   
27     private static String encodeByMD5(String originstr)  
28     {  
29         if(originstr !=null)  
30         {  
31             try{  
32                 //创建具有指定算法名称的信息摘要   
33                 MessageDigest md = MessageDigest.getInstance("MD5");  
34                 //使用指定的字节数组对摘要进行最后的更新,然后完成摘要计算   
35                 byte[] results = md.digest(originstr.getBytes());  
36                  //将得到的字节数组编程字符窜返回   
37                 String resultString = byteArrayToHexString(results);  
38                 return resultString.toUpperCase();  
39             }
catch(Exception ex){  
40                 ex.printStackTrace();  
41             }
  
42         }
  
43        return null;  
44     }
  
45     //转换字节数组为十六进制字符串   
46     private static String byteArrayToHexString(byte[] b)  
47    {  
48        StringBuffer resultsb = new StringBuffer();  
49        int i=0;  
50        for(i=0;i<b.length;i++)  
51        {  
52            resultsb.append(byteToHexString(b[i]));  
53        }
  
54        return resultsb.toString();  
55    }
  
56    //将字节转化成十六进制的字符串   
57    private static String byteToHexString(byte b)  
58    {  
59        
60       int n=b;  
61       if(n<0)  
62        {  
63            n = 256 + n;  
64        }
  
65        int d1 = n / 16;  
66        int d2 = n /16;  
67        return hexDigits[d1]+hexDigits[d2];  
68    }
  
69  
70    public static void main(String[] args)  
71    {  
72        String password = Password.createPassword("123456");  
73        System.out.println("对123456用MD5加密后:"+password);  
74        String inputstr = "1234";  
75        System.out.println("1234与密码相同?"+Password.authenticatePassword(password, inputstr));  
76        inputstr = "123456";  
77        System.out.println("123456与密码相同?"+Password.authenticatePassword(password, inputstr));  
78    }
  
79}
  


转自:http://blog.csdn.net/jay314159/article/details/4918358

posted @ 2012-04-08 11:00 BIG森林 阅读(3600) | 评论 (0)编辑 收藏

Java中byte与16进制字符串的互相转换

Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16进制字符H和L,并组合起来得到byte转换到16进制字符串的结果new String(H) + new String(L)。即byte用十六进制表示只占2位。

同理,相反的转换也是将两个16进制字符转换成一个byte,原理同上。

根据以上原理,我们就可以将byte[] 数组转换为16进制字符串了,当然也可以将16进制字符串转换为byte[]数组了。

 

 

/**

Java代码 
1. * Convert byte[] to hex string.这里我们可以将byte转换成int,然后利用Integer.toHexString(int)来转换成16进制字符串。  
2. * @param src byte[] data  
3. * @return hex string  
4. */     
5.public static String bytesToHexString(byte[] src){  
6.    StringBuilder stringBuilder = new StringBuilder("");  
7.    if (src == null || src.length <= 0) {  
8.        return null;  
9.    }  
10.    for (int i = 0; i < src.length; i++) {  
11.        int v = src[i] & 0xFF;  
12.        String hv = Integer.toHexString(v);  
13.        if (hv.length() < 2) {  
14.            stringBuilder.append(0);  
15.        }  
16.        stringBuilder.append(hv);  
17.    }  
18.    return stringBuilder.toString();  
19.}  
20./** 
21. * Convert hex string to byte[] 
22. * @param hexString the hex string 
23. * @return byte[] 
24. */ 
25.public static byte[] hexStringToBytes(String hexString) {  
26.    if (hexString == null || hexString.equals("")) {  
27.        return null;  
28.    }  
29.    hexString = hexString.toUpperCase();  
30.    int length = hexString.length() / 2;  
31.    char[] hexChars = hexString.toCharArray();  
32.    byte[] d = new byte[length];  
33.    for (int i = 0; i < length; i++) {  
34.        int pos = i * 2;  
35.        d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));  
36.    }  
37.    return d;  
38.}  
39./** 
40. * Convert char to byte 
41. * @param c char 
42. * @return byte 
43. */ 
44. private byte charToByte(char c) {  
45.    return (byte) "0123456789ABCDEF".indexOf(c);  
46.} 
     * Convert byte[] to hex string.这里我们可以将byte转换成int,然后利用Integer.toHexString(int)来转换成16进制字符串。
     * @param src byte[] data
     * @return hex string
     */  
    public static String bytesToHexString(byte[] src){
        StringBuilder stringBuilder = new StringBuilder("");
        if (src == null || src.length <= 0) {
            return null;
        }
        for (int i = 0; i < src.length; i++) {
            int v = src[i] & 0xFF;
            String hv = Integer.toHexString(v);
            if (hv.length() < 2) {
                stringBuilder.append(0);
            }
            stringBuilder.append(hv);
        }
        return stringBuilder.toString();
    }
    /**
     * Convert hex string to byte[]
     * @param hexString the hex string
     * @return byte[]
     */
    public static byte[] hexStringToBytes(String hexString) {
        if (hexString == null || hexString.equals("")) {
            return null;
        }
        hexString = hexString.toUpperCase();
        int length = hexString.length() / 2;
        char[] hexChars = hexString.toCharArray();
        byte[] d = new byte[length];
        for (int i = 0; i < length; i++) {
            int pos = i * 2;
            d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
        }
        return d;
    }
    /**
     * Convert char to byte
     * @param c char
     * @return byte
     */
     private byte charToByte(char c) {
        return (byte) "0123456789ABCDEF".indexOf(c);
    }


Java代码 
1.//将指定byte数组以16进制的形式打印到控制台  
2.public static void printHexString( byte[] b) {    
3.   for (int i = 0; i < b.length; i++) {   
4.     String hex = Integer.toHexString(b[i] & 0xFF);      //b[i] 和0xFF进行与运算(0xFF默认是int型,二进制位00000000 00000000 00000000 11111111
5.     if (hex.length() == 1) {   
6.       hex = '0' + hex;    //高四位置为0
7.     }   
8.     System.out.print(hex.toUpperCase() );      //将十六进制个字符转换为大写输出到控制台
9.   }   
10. 
11.} 


//将指定byte数组以16进制的形式打印到控制台
public static void printHexString( byte[] b) { 
   for (int i = 0; i < b.length; i++) {
     String hex = Integer.toHexString(b[i] & 0xFF);
     if (hex.length() == 1) {
       hex = '0' + hex;
     }
     System.out.print(hex.toUpperCase() );
   }

}

java中byte转换int时为何与0xff进行与运算

在剖析该问题前请看如下代码

Java代码 
1.public static String bytes2HexString(byte[] b) {  
2.  String ret = "";  
3.  for (int i = 0; i < b.length; i++) {  
4.   String hex = Integer.toHexString(b[ i ] & 0xFF);  
5.   if (hex.length() == 1) {  
6.    hex = '0' + hex;  
7.   }  
8.   ret += hex.toUpperCase();  
9.  }  
10.  return ret;  
11.} 
上面是将byte[]转化十六进制的字符串,注意这里b[ i ] & 0xFF将一个byte和 0xFF进行了与运算,然后使用Integer.toHexString取得了十六进制字符串,可以看出
b[ i ] & 0xFF运算后得出的仍然是个int,那么为何要和 0xFF进行与运算呢?直接 Integer.toHexString(b[ i ]);,将byte强转为int不行吗?答案是不行的.

其原因在于:
1.byte的大小为8bits而int的大小为32bits
2.java的二进制采用的是补码形式

在这里先温习下计算机基础理论

byte是一个字节保存的,有8个位,即8个0、1。
8位的第一个位是符号位,
也就是说0000 0001代表的是数字1
1000 0000代表的就是-1
所以正数最大位0111 1111,也就是数字127
负数最大为1111 1111,也就是数字-128

上面说的是二进制原码,但是在java中采用的是补码的形式,下面介绍下什么是补码

1、反码:
        一个数如果是正,则它的反码与原码相同;
        一个数如果是负,则符号位为1,其余各位是对原码取反;

2、补码:利用溢出,我们可以将减法变成加法
       对于十进制数,从9得到5可用减法:
       9-4=5    因为4+6=10,我们可以将6作为4的补数
       改写为加法:
       9+6=15(去掉高位1,也就是减10)得到5.

       对于十六进制数,从c到5可用减法:
       c-7=5    因为7+9=16 将9作为7的补数
       改写为加法:
       c+9=15(去掉高位1,也就是减16)得到5.

    在计算机中,如果我们用1个字节表示一个数,一个字节有8位,超过8位就进1,在内存中情况为(100000000),进位1被丢弃。

    ⑴一个数为正,则它的原码、反码、补码相同
    ⑵一个数为负,刚符号位为1,其余各位是对原码取反,然后整个数加1
   
- 1的原码为                10000001
- 1的反码为                11111110
                                                   + 1
- 1的补码为                11111111

0的原码为                 00000000
0的反码为                 11111111(正零和负零的反码相同)
                                          +1
0的补码为               100000000(舍掉打头的1,正零和负零的补码相同)

Integer.toHexString的参数是int,如果不进行&0xff,那么当一个byte会转换成int时,由于int是32位,而byte只有8位这时会进行补位,
例如补码11111111的十进制数为-1转换为int时变为11111111111111111111111111111111好多1啊,呵呵!即0xffffffff但是这个数是不对的,这种补位就会造成误差。
和0xff相与后,高24比特就会被清0了,结果就对了。

----
Java中的一个byte,其范围是-128~127的,而Integer.toHexString的参数本来是int,如果不进行&0xff,那么当一个byte会转换成int时,对于负数,会做位扩展,举例来说,一个byte的-1(即0xff),会被转换成int的-1(即0xffffffff),那么转化出的结果就不是我们想要的了。

而0xff默认是整形,所以,一个byte跟0xff相与会先将那个byte转化成整形运算,这样,结果中的高的24个比特就总会被清0,于是结果总是我们想要的。

 

转自:http://franksinger.iteye.com/blog/614540

posted @ 2012-04-08 10:57 BIG森林 阅读(929) | 评论 (0)编辑 收藏

仅列出标题
共9页: 1 2 3 4 5 6 7 8 9 
<2012年9月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

导航

统计

常用链接

留言簿(2)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜