最近由于要做Qt相关的毕业设计课题,以前对Qt完全不了解,对于客户端图形界面程序,也只对Windows下的MFC熟悉,

所以,由于Qt的跨平台特性和相对比较纯的C++的特点,就准备学习一下吧。这两天逛了一下Qt的开发者官方网站,和一些国内的论坛,

看了下基本的知识点,比如信号和槽的机制,界面的布局,就想写个东西,巩固一下。于是参考了官方的文档和代码,纯代码实现了一个简易的记事本程序。

希望大家参考学习,共同进步。不足之处,还请指出。

记事本简介:记事本采用代码实现GUI界面,支持,新建,保存,另存为,查找,替换,打印功能。

开发环境:win7旗舰版 32位 Qt Creator   Qt 5.5

参考资料:http://www.devbean.net/2012/08/qt-study-road-2-intro

http://doc.qt.io/qt-5/gettingstartedqt.html

界面外观:

查找功能:

替换功能:


打印功能:

保存等:

关于本屌狮

本程序涉及一个主对话框,一个查找对话框,一个替换对话框,一个打印对话框,一个关于信息对话框,一个打开对话框,一个保存对话框,其他信息提示对话框。

功能设计:主要涉及对话框的布局,主对话框与查找,替换对话框的交互。当然这是通过信号与槽的机制来实现的。下面看下具体的代码实现。

主对话框类

 #ifndef MAINWINDOW_H
#define MAINWINDOW_H #include <QMainWindow>
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QTextEdit>
#include <QIcon>
#include <QFile>
#include <QFileDialog>
#include <QTextStream>
#include <QMessageBox>
#include <QTextDocument>
#include <QTextCursor>
#include <QToolBar>
#include <QtPrintSupport/QPrinter>
#include <QtPrintSupport/QPrintDialog>
#include <QtPrintSupport/QPrintPreviewDialog>
#include <QtPrintSupport/QPageSetupDialog> #include <finddialog.h> #include <replacedialog.h> class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = );
~MainWindow();
protected:
private slots:
void createMenus();
void createActions();
void newAct();
void openAct();
void saveAct();
void printAct();
void exitAct();
void findAct(QString,bool,bool);
void aboutAct();
void anotherSaveAct();
void showFindDialog();
void showReplaceDialog();
void findReplace(QString,bool);
void replaceCur(QString,QString);
void replaceAll(QString,QString,bool); private:
//菜单
bool find;
QMenu *file_menu;
QMenu *edit_menu;
QMenu *about_menu;
//Action响应file_menu
QAction *new_act;
QAction *open_act;
QAction *save_act;
QAction *another_save_act;
QAction *print_act;
QAction *exit_act;
//Action响应edit_menu
QAction *find_act;
QAction *replace_act;
//Action响应help_menu
QAction *about_act;
//Edit
QTextEdit *mini_text; FindDialog *find_dialog;
ReplaceDialog *replace_dialog;
QString cur_file_name; }; #endif // MAINWINDOW_H
 #include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
setWindowTitle(tr("MiniText"));
mini_text = new QTextEdit;
this->setCentralWidget(mini_text);
resize(,);
cur_file_name = tr(""); createActions();
createMenus();
} MainWindow::~MainWindow()
{
if(file_menu){
delete file_menu;
}
if(edit_menu){
delete edit_menu;
}
if(about_menu){
delete about_menu;
}
if(new_act){
delete new_act;
}
if(open_act){
delete open_act;
}
if(save_act){
delete save_act;
}
if(print_act){
delete print_act;
}
if(exit_act){
delete exit_act; }
if(find_act){
delete find_act; }
if(replace_act){
delete replace_act;
}
if(about_act){
delete about_act;
}
if(mini_text){
delete mini_text;
}
if(find_dialog){
delete find_dialog;
}
if(replace_dialog){
delete replace_dialog;
}
if(another_save_act){
delete another_save_act;
}
} void MainWindow::createMenus()
{ file_menu = menuBar()->addMenu(tr("&文件"));
file_menu->setStyleSheet("color:blue");
file_menu->addAction(new_act);
file_menu->addAction(open_act);
file_menu->addAction(save_act);
file_menu->addAction(another_save_act);
file_menu->addAction(print_act);
file_menu->addSeparator();
file_menu->addAction(exit_act);
edit_menu = menuBar()->addMenu(tr("&编辑"));
edit_menu->setStyleSheet("color:blue");
edit_menu->addAction(find_act);
edit_menu->addAction(replace_act);
about_menu = menuBar()->addMenu(tr("&关于"));
about_menu->setStyleSheet("color:blue");
about_menu->addAction(about_act);
QToolBar *tool_bar = addToolBar(tr("file"));
tool_bar->addAction(new_act);
tool_bar->addAction(open_act);
tool_bar->addAction(save_act);
tool_bar->addAction(another_save_act);
tool_bar->addAction(print_act);
tool_bar->addAction(find_act);
tool_bar->addAction(replace_act);
tool_bar->addAction(about_act);
tool_bar->addAction(exit_act); } void MainWindow::createActions()
{
find = false;
find_dialog = new FindDialog(this);
replace_dialog = new ReplaceDialog(this);
//Action响应file_menu
new_act = new QAction(QIcon(tr(":/images/new")),tr("&新建"),this);
new_act->setShortcut(QKeySequence::New); open_act = new QAction(QIcon(tr(":/images/open")),tr("&打开"),this);
open_act->setShortcut(QKeySequence::Open); save_act = new QAction(QIcon(tr(":/images/save")),tr("&保存"),this);
save_act->setShortcut(QKeySequence::Save); another_save_act = new QAction(QIcon(tr(":/images/another_save")),tr("另存为"),this); print_act = new QAction(QIcon(tr(":/images/print")),tr("&打印"),this);
print_act->setShortcut(QKeySequence::Print); exit_act = new QAction(QIcon(tr(":/images/exit")),tr("&退出"),this);
exit_act->setShortcut(QKeySequence::Quit); find_act = new QAction(QIcon(tr(":/images/find")),tr("&查找"),this);
find_act->setShortcut(QKeySequence::Find); replace_act = new QAction(QIcon(tr(":/images/replace")),tr("&替换"),this);
replace_act->setShortcut(QKeySequence::Replace); about_act = new QAction(QIcon(tr(":/images/about")),tr("关于"),this); connect(new_act,SIGNAL(triggered()),this,SLOT(newAct()));
connect(open_act,SIGNAL(triggered()),this,SLOT(openAct()));
connect(save_act,SIGNAL(triggered()),this,SLOT(saveAct()));
connect(print_act,SIGNAL(triggered()),this,SLOT(printAct()));
connect(another_save_act,SIGNAL(triggered()),this,SLOT(anotherSaveAct()));
connect(exit_act,SIGNAL(triggered()),this,SLOT(exitAct()));
connect(find_act,SIGNAL(triggered()),this,SLOT(showFindDialog()));
connect(replace_act,SIGNAL(triggered()),this,SLOT(showReplaceDialog()));
connect(about_act,SIGNAL(triggered()),this,SLOT(aboutAct())); connect(find_dialog,SIGNAL(findTextDataButtonClickedSignal(QString,bool,bool)),
this,SLOT(findAct(QString,bool,bool)));
connect(replace_dialog,SIGNAL(findReplaceStr(QString,bool)),
this,SLOT(findReplace(QString,bool)));
connect(replace_dialog,SIGNAL(replaceCurOneStr(QString,QString)),
this,SLOT(replaceCur(QString,QString)));
connect(replace_dialog,SIGNAL(replaceAllStr(QString,QString,bool)),
this,SLOT(replaceAll(QString,QString,bool)));
} void MainWindow::newAct()
{
if (mini_text->document()->isModified())
{
QMessageBox::StandardButton button = QMessageBox::information(this,
"尚未保存", "是否要保存?",QMessageBox::Save |
QMessageBox::Discard | QMessageBox::Cancel);
switch(button)
{
case QMessageBox::Save:{
saveAct();
if (mini_text->document()->isModified()){
return;
}
}
case QMessageBox::Cancel:{
return;
}
case QMessageBox::Discard:{
break;
}
}
}
mini_text->clear();
} //打开文件
void MainWindow::openAct()
{
QString file_name = QFileDialog::getOpenFileName(this,tr("打开文件"),QString(),
tr("文本文件(*.txt) ;; C++文件(*.h *.cpp *.hpp)"));
cur_file_name = file_name;
if(!file_name.isEmpty()){
QFile file(file_name);
if(!file.open(QIODevice::ReadOnly)){
QMessageBox::critical(this,tr("错误"),tr("不能打开文件"));
return;
}
QTextStream ins(&file);
mini_text->setText(ins.readAll());
file.close();
}
} //保存文件
void MainWindow::saveAct()
{
if(cur_file_name.isEmpty()){
QString file_name = QFileDialog::getSaveFileName(this,tr("保存文件"),QString(),
tr("文本文件(*.txt) ;; C++文件(*.h *.cpp *.hpp)"));
if(!file_name.isEmpty()){
QFile file(file_name);
if(!file.open(QIODevice::WriteOnly)){
QMessageBox::critical(this,tr("错误"),tr("不能打开文件"));
return;
}
QTextStream outs(&file);
outs<<mini_text->toPlainText();
outs.flush();
file.close();
}
}
else{
QFile file(cur_file_name);
if(!file.open(QIODevice::WriteOnly)){
QMessageBox::critical(this,tr("错误"),tr("不能打开文件"));
return;
}
QTextStream outs(&file);
outs<<mini_text->toPlainText();
outs.flush();
file.close();
}
} void MainWindow::anotherSaveAct()
{
QString file_name = QFileDialog::getSaveFileName(this,tr("保存文件"),QString(),
tr("文本文件(*.txt) ;; C++文件(*.h *.cpp *.hpp)"));
if(!file_name.isEmpty()){
QFile file(file_name);
if(!file.open(QIODevice::WriteOnly)){
QMessageBox::critical(this,tr("错误"),tr("不能打开文件"));
return;
}
QTextStream outs(&file);
outs<<mini_text->toPlainText();
outs.flush();
file.close();
} } void MainWindow::findReplace(QString find_str, bool flg)
{
bool find_flag;
if(flg){
find_flag = mini_text->find(find_str,QTextDocument::FindCaseSensitively);
}
else{
find_flag = mini_text->find(find_str);
}
if(!find_flag){
QMessageBox::information(this,tr("结果"),tr("没有找到查找内容"),QMessageBox::Yes);
}
else{
find = true;
} } void MainWindow::replaceCur(QString find_str, QString replace_str)
{
if(find){
QTextCursor text_cursor = mini_text->textCursor();
text_cursor.insertText(replace_str);
}
else{
QMessageBox::information(this,tr("结果"),tr("没有内容不能替换")+find_str,QMessageBox::Yes);
}
find = false;
} void MainWindow::replaceAll(QString find_str, QString replace_str,bool flg)
{
if(!flg){
bool haf = mini_text->find(find_str);
if(haf){
QTextCursor text_cursor = mini_text->textCursor();
text_cursor.insertText(replace_str);
while(mini_text->find(find_str)){
text_cursor = mini_text->textCursor();
text_cursor.insertText(replace_str);
}
while(mini_text->find(find_str,QTextDocument::FindBackward)){
text_cursor = mini_text->textCursor();
text_cursor.insertText(replace_str);
}
}
else{
QMessageBox::information(this,tr("结果"),tr("没有内容不能替换 ")+find_str,QMessageBox::Yes);
}
}
else{
bool haf = mini_text->find(find_str,QTextDocument::FindCaseSensitively);
if(haf){
QTextCursor text_cursor = mini_text->textCursor();
text_cursor.insertText(replace_str);
while(mini_text->find(find_str,QTextDocument::FindCaseSensitively)){
text_cursor = mini_text->textCursor();
text_cursor.insertText(replace_str);
}
while(mini_text->find(find_str,QTextDocument::FindCaseSensitively|QTextDocument::FindBackward)){
text_cursor = mini_text->textCursor();
text_cursor.insertText(replace_str);
}
}
else{
QMessageBox::information(this,tr("结果"),tr("没有内容不能替换")+find_str,QMessageBox::Yes);
}
} } void MainWindow::printAct()
{
QPrinter printer;
QString printer_name = printer.printerName();
if( printer_name.size() == ){
return;
}
QPrintDialog dlg(&printer, this);
if (mini_text->textCursor().hasSelection()){
dlg.addEnabledOption(QAbstractPrintDialog::PrintSelection);
}
if(dlg.exec() == QDialog::Accepted){
mini_text->print(&printer);
}
} void MainWindow::findAct(QString str,bool ignore,bool choose)
{
QString text = str;
bool find_flag;
if(!text.isEmpty()){
if(choose){
if(ignore){
find_flag = mini_text->find(text,QTextDocument::FindCaseSensitively);
}
else{
find_flag = mini_text->find(text); }
}
else{
if(ignore){
find_flag = mini_text->find(text,QTextDocument::FindBackward|QTextDocument::FindCaseSensitively);
}
else{
find_flag = mini_text->find(text,QTextDocument::FindBackward); }
}
if(!find_flag){
QMessageBox::information(this,tr("结果"),tr("没有找到查找内容"),QMessageBox::Yes);
}
} } void MainWindow::aboutAct()
{
QMessageBox message(QMessageBox::NoIcon,tr("关于"), tr("version: v1.0\n"
"author: karllen\n"
"qq: 1160113606\n"
"Begin Learning The Qt"));
message.setIconPixmap(QPixmap(tr(":/images/me")));
message.exec(); } void MainWindow::showFindDialog()
{
find_dialog->show();
} void MainWindow::showReplaceDialog()
{
replace_dialog->show();
} void MainWindow::exitAct()
{
this->close(); }

查找对话框类:

 #ifndef FINDDIALOG_H
#define FINDDIALOG_H
#include <QDialog>
#include <QLineEdit>
#include <QLabel>
#include <QPushButton>
#include <QRadioButton>
#include <QGridLayout>
#include <QHBoxLayout>
#include <QGroupBox>
#include <QCheckBox> class FindDialog:public QDialog
{
Q_OBJECT
public:
FindDialog(QWidget *parent = );
~FindDialog(); signals:
void findTextDataButtonClickedSignal(QString,bool,bool); private slots:
void findButtonState();
void findDataButtonClickedState(); private:
QLineEdit *find_edit;
QLabel *find_label,*ignore_label,*next_label,*back_label;
QPushButton *find_button;
QRadioButton *next_radio;
QRadioButton *back_radio;
QCheckBox *ignore_flag;
}; #endif // FINDDIALOG_H
 #include "finddialog.h"

 FindDialog::FindDialog(QWidget *parent)
:QDialog(parent)
{
setWindowTitle(tr("查找"));
find_label = new QLabel(tr("查找"));
ignore_label = new QLabel(tr("区分大小写"));
next_label = new QLabel(tr("向后"));
back_label = new QLabel(tr("向前"));
find_edit = new QLineEdit;
find_button = new QPushButton(tr("查找下一个"));
next_radio = new QRadioButton;
back_radio = new QRadioButton;
ignore_flag = new QCheckBox; find_edit->setText(tr("")); QGridLayout *grid_layout = new QGridLayout(this);
grid_layout->addWidget(find_label,,);
grid_layout->addWidget(find_edit,,);
grid_layout->addWidget(find_button,,); QHBoxLayout *ignore_layout = new QHBoxLayout;
ignore_layout->setSpacing();
ignore_layout->addWidget(ignore_label);
ignore_layout->addWidget(ignore_flag); QHBoxLayout *radio_layout = new QHBoxLayout;
radio_layout->addWidget(next_label);
radio_layout->addWidget(next_radio); radio_layout->addWidget(back_label);
radio_layout->addWidget(back_radio); QGroupBox *group_radio = new QGroupBox(tr("方向"),this);
group_radio->setLayout(radio_layout); QHBoxLayout *do_radio = new QHBoxLayout;
do_radio->addWidget(group_radio); grid_layout->addLayout(ignore_layout,,);
grid_layout->addLayout(do_radio,,); this->setMaximumSize(,);
next_radio->setChecked(true);
find_button->setEnabled(false);
connect(find_edit,SIGNAL(textChanged(QString)),this,SLOT(findButtonState()));
connect(find_button,SIGNAL(clicked(bool)),this,SLOT(findDataButtonClickedState()));
} FindDialog::~FindDialog()
{
if(find_edit){
delete find_edit;
}
if(find_label){
delete find_label;
}
if(ignore_label){
delete ignore_label;
}
if(next_label){
delete next_label;
}
if(back_label){
delete back_label;
}
if(find_button){
delete find_button;
}
if(next_radio){
delete next_radio;
}
if(back_radio){
delete back_radio;
}
if(ignore_flag){
delete ignore_flag;
}
} void FindDialog::findButtonState()
{
if(find_edit->text().isEmpty()){
find_button->setEnabled(false);
}
else{
find_button->setEnabled(true);
} } void FindDialog::findDataButtonClickedState()
{
if(find_edit->text().isEmpty()){
return;
}
QString str = find_edit->text();
if(next_radio->isChecked()){
if(ignore_flag->isChecked()){
emit findTextDataButtonClickedSignal(str,true,true);
}
else{
emit findTextDataButtonClickedSignal(str,false,true);
}
}
if(back_radio->isChecked()){
if(ignore_flag->isChecked()){
emit findTextDataButtonClickedSignal(str,true,false);
}
else{
emit findTextDataButtonClickedSignal(str,false,false);
}
}
}

替换对话框类:

 #ifndef REPLACEDIALOG_H
#define REPLACEDIALOG_H #include <QDialog>
#include <QPushButton>
#include <QLabel>
#include <QCheckBox>
#include <QLineEdit>
#include <QGridLayout>
#include <QVBoxLayout> class ReplaceDialog:public QDialog
{
Q_OBJECT
public:
ReplaceDialog(QWidget *parent = );
~ReplaceDialog();
signals:
void replaceAllStr(QString , QString,bool);
void replaceCurOneStr(QString,QString);
void findReplaceStr(QString,bool);
private slots:
void chooseStrSlot();
void findButtonStateSlot();
void replaceOneButtonStateSlot();
void replaceAllButtonStateSlot();
private:
QLineEdit *find_str;
QLineEdit *replace_str;
QPushButton *find_next_button;
QPushButton *replaced_one_button;
QPushButton *replaced_all_button;
QPushButton *cancle_button;
QCheckBox *ignore_flag;
QLabel *find_label;
QLabel *replace_label;
}; #endif // REPLACEDIALOG_H
 #include "replacedialog.h"

 ReplaceDialog::ReplaceDialog(QWidget *parent)
:QDialog(parent)
{
find_label = new QLabel(tr("查找内容"));
replace_label = new QLabel(tr("替换为"));
find_str = new QLineEdit();
replace_str = new QLineEdit();
find_next_button = new QPushButton(tr("查找下一个"));
replaced_one_button = new QPushButton(tr("替换"));
replaced_all_button = new QPushButton(tr("全部替换"));
cancle_button = new QPushButton(tr("取消"));
ignore_flag = new QCheckBox(tr("区分大小写")); QGridLayout *grdly = new QGridLayout(this);
QVBoxLayout *vboxly = new QVBoxLayout(this); vboxly->addWidget(replaced_all_button);
vboxly->addWidget(cancle_button);
grdly->addWidget(find_label,,);
grdly->addWidget(find_str,,);
grdly->addWidget(find_next_button,,);
grdly->addWidget(replace_label,,);
grdly->addWidget(replace_str,,);
grdly->addWidget(replaced_one_button,,);
grdly->addWidget(ignore_flag,,);
grdly->addLayout(vboxly,,); find_str->setText(tr(""));
replace_str->setText(tr(""));
find_next_button->setEnabled(false);
replaced_one_button->setEnabled(false);
replaced_all_button->setEnabled(false); this->setMaximumSize(,); connect(find_str,SIGNAL(textChanged(QString)),this,SLOT(chooseStrSlot()));
connect(cancle_button,SIGNAL(clicked()),this,SLOT(close()));
connect(find_next_button,SIGNAL(clicked()),this,SLOT(findButtonStateSlot()));
connect(replaced_one_button,SIGNAL(clicked()),this,SLOT(replaceOneButtonStateSlot()));
connect(replaced_all_button,SIGNAL(clicked()),this,SLOT(replaceAllButtonStateSlot()));
} ReplaceDialog::~ReplaceDialog()
{
if(find_str){
delete find_str;
}
if(replace_str){
delete replace_str;
}
if(find_next_button){
delete find_next_button;
}
if(replaced_one_button){
delete replaced_one_button;
}
if(replaced_all_button){
delete replaced_all_button;
}
if(cancle_button){
delete cancle_button;
}
if(ignore_flag){
delete ignore_flag;
}
if(find_label){
delete find_label;
}
if(replace_label){
delete replace_label;
}
} void ReplaceDialog::chooseStrSlot()
{
if(!find_str->text().isEmpty()){
find_next_button->setEnabled(true);
replaced_one_button->setEnabled(true);
replaced_all_button->setEnabled(true);
}
else{
find_next_button->setEnabled(false);
replaced_one_button->setEnabled(false);
replaced_all_button->setEnabled(false);
}
} void ReplaceDialog::findButtonStateSlot()
{
if(ignore_flag->isChecked()){
emit findReplaceStr(find_str->text(),true);
}
else{
emit findReplaceStr(find_str->text(),false);
}
} void ReplaceDialog::replaceOneButtonStateSlot()
{
emit replaceCurOneStr(find_str->text(),replace_str->text()); } void ReplaceDialog::replaceAllButtonStateSlot()
{
if(ignore_flag->isChecked()){
emit replaceAllStr(find_str->text() , replace_str->text(),true);
}
else{
emit replaceAllStr(find_str->text() , replace_str->text(),false);
} }

main函数:

 #include "mainwindow.h"
#include "finddialog.h"
#include <QApplication> int main(int argc, char *argv[])
{
QApplication a(argc, argv); MainWindow w;
w.show();
return a.exec();
}

注:代码下载地址 http://download.csdn.net/detail/u010085340/9289609

qt5.5实现 记事本程序的更多相关文章

  1. win32记事本程序(一)

    我不会取标题,大体上我想用win32,模仿windows的记事本,写个记事本程序,最后让我的程序和微软的程序在外观和功能上都差不多.这样一来我可以学到一些新知识,巩固旧的知识. 一.首先做个菜单栏吧. ...

  2. 简单记事本程序java源码项目

    代码如下 import java.awt.*; import java.io.*; import java.awt.datatransfer.*; import java.awt.event.*; p ...

  3. 【windows开发实现记事本程序——逻辑篇1】

    1. 主要内容 从本节开始介绍windows开发实现记事本程序的逻辑实现部分.本节的主要内容有以下3点: 1. 主窗口定义  -- 主要介绍记事本主界面窗口对应的窗口类及实现方案 2. RichEdi ...

  4. 【windows开发实现记事本程序——界面篇】

    前言 从毕业开始学习windows UI编程,工作中总是和一些API打交道,但是从没有做过一个完整的界面程序.因此打算自己利用空余时间做一个小的项目来总结自己所学的东西.在网上看到许多人建议自己动手写 ...

  5. C#+Winform记事本程序

    第17章 记事本 如何使用Visual C# 2010设计一个Windows应用程序——记事本,学习,可以进一步掌握MenuStrip(菜单).ToolStrip(工具栏).RichTextBox(高 ...

  6. 十一、GUI设计-记事本程序

    """记事本程序""" from tkinter import *from tkinter.filedialog import *from ...

  7. 用tkinter写一个记事本程序(未完成)

    之前在看tkinter与python编程 ,后面学opengl就把那本书搁置了.几天没用tkinter,怕是基本的创建组件那些都忘记了,所以想着用tkinter试着写一下记事本程序.一开始的时候以为很 ...

  8. C#编写一个较完整的记事本程序

    开发环境 Visual Studio 2019 至少需安装 .NET桌面开发 创建项目并配置 创建窗体文件 配置项目名称及框架 设计界面 创建窗体文件,将控件摆放位置如下,参考系统自带的记事本程序 窗 ...

  9. win32记事本程序(二)

    遇到一个较大的难题,做记事本要不要使用edit或者是richedit控件呢.如果用控件的话感觉没什么挑战,不用控件,现有的参考资料仅有<windows程序设计>第六章的TYPER程序,这个 ...

随机推荐

  1. Eclipse中Build Workspace 优化

    在开发中,发现eclipse 的 Build Workspace 很慢很慢,只要是由于验证js, css, xml 等等静态的文件导致. 我遇到的问题是,项目中有一个js文件很大,怎么都不能Build ...

  2. 【收藏用】--切勿转载Java处理XML的三种主流技术及介绍

    原帖地址 : http://www.ibm.com/developerworks/cn/xml/dm-1208gub/ XML (eXtensible Markup Language) 意为可扩展标记 ...

  3. jps命令

    转载:http://blog.csdn.net/wanglha/article/details/40181701 ps -- JavaVirtual Machine Process Status To ...

  4. vs报算术运算溢出的错误

    是因为查询的数据量太大,把数据量减少点就不会报这个错了. 或者查询速度快点比如加索引也可能解决,待确定.

  5. [Flex] as3xls读取excel,修改保存单表(一)

    经过大神修改过的as3xls支持中文,并可以修改保存单一sheet,保存后原有的excel样式均会消失,目前仅能如此. <?xml version="1.0" encodin ...

  6. JQuery 插件FlexiGrid 之完全配置与使用

    博客分类: Java综合 jQuery配置管理jsonServlet数据结构  自己再做这个的时候.也是找了很多资料..但网上搜索了很多资料. 没有介绍的很全的. 鄙人就在此献丑一下. 来全面的介绍一 ...

  7. 动手学servlet(二) servlet基础

    1.我们来试着向一个servlet提交一个表单,现在webcontent下新建一个login.html页面,其中action对应servelt类名,代码如下: <!DOCTYPE HTML PU ...

  8. 打开10.10.3上SSD的TRIM-黑苹果之路

    对SSD没有研究,同事提出苹果对非官方的SSD不开启TRIM,上网度了一把,对TRIM不明觉厉. 一.TRIM是怎么回事:http://bbs.feng.com/read-htm-tid-187088 ...

  9. 中南大学第一届长沙地区程序设计邀请赛 To Add Which?

    1350: To Add Which? Time Limit: 1 Sec  Memory Limit: 128 MB Description There is an integer sequence ...

  10. fw:理解RESTful架构

    理解RESTful架构   作者: 阮一峰 日期: 2011年9月12日 越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软件"采用客户端/服务器模式,建立 ...