请问各位如何在下拉列表框中显示图片呀?

smartLML 2004-11-03 09:13:46
如题.
...全文
133 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
96692 2005-01-11
  • 打赏
  • 举报
回复
不可能,除非自己画
zh_zh_y 2004-11-14
  • 打赏
  • 举报
回复
哪位大哥有时间去看看。
随机数的获取,为什么都是相同的,如何修改
http://community.csdn.net/Expert/topic/3551/3551704.xml?temp=.4579584
tnt8csdn2000 2004-11-14
  • 打赏
  • 举报
回复
没有办法,自己写控件吧。
IM_MXZ 2004-11-14
  • 打赏
  • 举报
回复
孟子E章有这个例子,去看看吧!
up
smartLML 2004-11-03
  • 打赏
  • 举报
回复
就没有办法实现吗? goodhy(剑走偏锋)
goodhy 2004-11-03
  • 打赏
  • 举报
回复
其实这样做很难!!
一、Qt Creator 的安装和hello world 程序的编写(原创) 1.首先到Qt 的官方网站上下载Qt Creator,这里我们下载windows 版的。 下载地址:http://qt.nokia.com/downloads 如下图我们下载:Download Qt SDK for Windows* (178Mb) 下载完成后,直接安装即可,安装过程中按默认设置即可。 2.运行Qt Creator,首先弹出的是欢迎界面,这里可以打开其自带的各种演示 程序。 3.我们用File->New 菜单来新建工程。 4.这里我们选择Qt4 Gui Application。 5.下面输入工程名和要保存到的文件夹路径。我们这里的工程名为helloworld。 6.这时软件自动添加基本的头文件,因为这个程序我们不需要其他的功能,所以 直接点击Next。 7.我们将base class 选为QDialog 对话框类。然后点击Next。 8.点击Finish,完成工程的建立。 9.我们可以看见工程中的所有文件都出现在列表中了。我们可以直接按下下面的 绿色的run 按钮或者按下Ctrl+R 快捷键运行程序。 10.程序运行会出现空白的对话框,如下图。 11.我们双击文件列表的dialog.ui 文件,便出现了下面所示的图形界面编辑界 面。 12.我们在右边的器件栏里找到Label 标签器件 13.按着鼠标左键将其拖到设计窗口上,如下图。 14.我们双击它,并将其内容改为helloworld。 15.我们在右下角的属性栏里将字体大小由9 改为15。 16.我们拖动标签一角的蓝点,将全部文字显示出来。 17.再次按下运行按钮,便会出现helloworld。 到这里helloworld 程序便完成了。 Qt Creator 编译的程序,在其工程文件夹下会有一个debug 文件夹,其中有程序的.exe 可执行文件。但Qt Creator 默认是用动态链接的, 就是可执行程序在运行时需要相应的.dll 文件。我们点击生成的.exe 文件,首 先可能显示“没有找到mingwm10.dll,因此这个应用程序未能启动。重新安装 应用程序可能会修复此问题。”表示缺少mingwm10.dll 文件。 解决这个问题我们可以将相应的.dll 文件放到系统 中。在Qt Creator 的安装目录的qt 文件下的bin 文件夹下(我安装在了D 盘, 所以路径是D:\Qt\2009.04\qt\bin),可以找到所有的相关.dll 文件。在这里 找到mingwm10.dll 文件,将其复制到C:\WINDOWS\system 文件夹下,即可。下 面再提示缺少什么dll 文件,都像这样解决就可以了。 二、Qt Creator 编写多窗口程序(原创) 实现功能: 程序开始出现一个对话框,按下按钮后便能进入主窗口,如果直 接关闭这个对话框,便不能进入主窗口,整个程序也将退出。当进入主窗口后, 我们按下按钮,会弹出一个对话框,无论如何关闭这个对话框,都会回到主窗口。 实现原理: 程序里我们先建立一个主工程,作为主界面,然后再建立一个对 话框类,将其加入工程中,然后在程序中调用自己新建的对话框类来实现多窗口。 实现过程: 1.首先新建Qt4 Gui Application 工程,工程名为nGui,Base class 选为QWidget。 建立好后工程文件列表如下图。 2.新建对话框类,如下图,在新建中,选择Qt Designer Form Class。 3.选择Dialog without Buttons。 4.类名设为myDlg。 5.点击Finish 完成。注意这里已经默认将其加入到了我们刚建的工程中了。 6.如下图,在mydlg.ui 中拖入一个Push Button,将其上的文本改为“进入主 窗口”,在其属性窗口中将其objectName 改为enterBtn,在下面的Signals and slots editor 中进行信号和槽的关联,其中,Sender 设为enterBtn,Signal 设为clicked(),Receive 设为myDlg,Slot 设为accept()。这样就实现了单击 这个按钮使这个对话框关闭并发出Accepted 信号的功能。下面我们将利用这个 信号。 7.修改主函数main.cpp,如下: #include #include "widget.h" #include "mydlg.h" //加入头文件 int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; myDlg my1; //建立自己新建的类的对象my1 if(my1.exec()==QDialog::Accepted) //利用Accepted 信号判 断enterBtn 是否被按下 { w.show(); //如果被按下,显示主窗口 return a.exec(); //程序一直执行,直到主窗口 关闭 } else return 0; //如果没被按下,则不会进入主窗口,整个程 序结束运行 } 主函数必须这么写,才能完成所要的功能。 如果主函数写成下面这样: #include #include "widget.h" #include "mydlg.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); myDlg my1; if(my1.exec()==QDialog::Accepted) { Widget w; w.show(); } return a.exec(); } 这样,因为w 是在if 语句里定义的,所以当if 语句执行完后它就无效了。这样 导致的后果就是,按下enterBtn 后,主界面窗口一闪就没了。如果此时对程序 改动了,再次点击运行时,就会出现error: collect2: ld returned 1 exit status 的错误。这是因为虽然主窗口没有显示,但它只是隐藏了,程序并没有 结束,而是在后台运行。所以这时改动程序,再运行时便会出错。你可以按下调 试栏上面的红色Stop 停止按钮来停止程序运行。你也可以在windows 任务管理 器的进程中将该进程结束,而后再次运行就没问题了,当然先关闭Qt Creator, 而后再重新打开,这样也能解决问题。 如果把程序改为这样: #include #include "widget.h" #include "mydlg.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); myDlg my1; Widget w; if(my1.exec()==QDialog::Accepted) { w.show(); } return a.exec(); } 这样虽然解决了上面主窗口一闪而过的问题,但是,如果在my1 对话框出现的时 候不点enterBtn,而是直接关闭对话框,那么此时整个程序应该结束执行,但 是事实是这样的吗?如果你此时对程序进行了改动,再次按下run 按钮,你会发 现又出现了error: collect2: ld returned 1 exit status 的错误,这说明程 序并没有结束,我们可以打开windows 任务管理器,可以看到我们的程序仍在执 行。 因为return a.exec();一句表示只要主窗口界面不退出,那么程 序就会一直执行。所以只有用第一种方法,将该语句也放到if 语句中,而在else 语句中用else return 0; ,这样如果enterBtn 没有被按下,那么程序就会结 束执行了。 到这里,我们就实现了一个界面结束执行,然后弹出另一个 界面的程序。下面我们在主窗口上加一个按钮,按下该按钮,弹出一个对话框, 但这个对话框关闭,不会使主窗口关闭。 8.如下图,在主窗口加入按钮,显示文本为“弹出一个对话框”,在其上点击鼠 标右键,在弹出的菜单中选择go to slot。 9.我们选择单击事件clicked()。 10.我们在弹出的槽函数中添加一句: my2.show(); my2 为我们新建对话框类的另一个对象,但是my2 我们还没有定义,所以 在widget.h 文件中添加相应代码,如下,先加入头文件,再加入my2 的定义语 句,这里我们将其放到private 里,因为一般的函数都放在public 里,而变量 都放在private 里。 #ifndef WIDGET_H #define WIDGET_H #include #include "mydlg.h" //包含头文件 namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = 0); ~Widget(); private: Ui::Widget *ui; myDlg my2; //对my2 进行定义 private slots: void on_pushButton_clicked(); }; #endif // WIDGET_H 到这里,再运行程序,便能完成我们实验要求的功能了。整个程序里,我们用两 种方法实现了信号和槽函数的关联,第一个按钮我们直接在设计器中实现其关 联;第二个按钮我们自己写了槽函数语句,其实图形的设计与直接写代码效果是 一样的。 这个程序里我们实现了两类窗口打开的方式,一个是自身消失而 后打开另一个窗口,一个是打开另一个窗口而自身不消失。可以看到他们实现的 方法是不同的。 三、Qt Creator 登录对话框(原创) 实现功能: 在弹出对话框中填写用户名和密码,按下登录按钮,如果用户名和密码均正确则 进入主窗口,如果有错则弹出警告对话框。 实现原理: 通过上节的多窗口原理实现由登录对话框进入主窗口,而用户名和密码可以用 if 语句进行判断。 实现过程: 1.先新建Qt4 Gui Application 工程,工程名为mainWidget,选用QWidget 作 为Base class,这样便建立了主窗口。文件列表如下: 2.然后新建一个Qt Designer Form Class 类,类名为loginDlg,选用Dialog without Buttons,将其加入上面的工程中。文件列表如下: 3.在logindlg.ui 中设计下面的界面:行输入框为Line Edit。其中用户名后面 的输入框在属性中设置其object Name 为usrLineEdit,密码后面的输入框为 pwdLineEdit,登录按钮为loginBtn,退出按钮为exitBtn。 4.将exitBtn 的单击后效果设为退出程序,关联如下: 5.右击登录按钮选择go to slot,再选择clicked(),然后进入其单击事件的槽 函数,写入一句 void loginDlg::on_loginBtn_clicked() { accept(); } 6.改写main.cpp: #include #include "widget.h" #include "logindlg.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget w; loginDlg login; if(login.exec()==QDialog::Accepted) { w.show(); return a.exec(); } else return 0; } 7.这时执行程序,可实现按下登录按钮进入主窗口,按下退出按钮退出程序。 8.添加用户名密码判断功能。将登陆按钮的槽函数改为: void loginDlg::on_loginBtn_clicked() { if(m_ui->usrLineEdit->text()==tr("qt")&&m_ui->pwdLineEdit->text()==tr ("123456")) //判断用户名和密码是否正确 accept(); else{ QMessageBox::warning(this,tr("Warning"),tr("user name or password error!"),QMessageBox::Yes); //如果不正确,弹出警告对话框 } } 并在logindlg.cpp 中加入#include 的头文件。如果不加这个头文件, QMessageBox 类不可用。 9.这时再执行程序,输入用户名为qt,密码为123456,按登录按钮便能进入主 窗口了,如果输入错了,就会弹出警告对话框。 如果输入错误,便会弹出警告提示框: 10.在logindlg.cpp 的loginDlg 类构造函数里,添上初始化语句,使密码显示 为小黑点。 loginDlg::loginDlg(QWidget *parent) : QDialog(parent), m_ui(new Ui::loginDlg) { m_ui->setupUi(this); m_ui->pwdLineEdit->setEchoMode(QLineEdit::Password); } 效果如下: 11.如果输入如下图中的用户名,在用户名前不小心加上了一些空格,结果程序 按错误的用户名对待了。 我们可以更改if 判断语句,使这样的输入也算正确。 void loginDlg::on_loginBtn_clicked() { if(m_ui->usrLineEdit->text().trimmed()==tr("qt")&&m_ui->pwdLineEdit-> text()==tr("123456")) accept(); else{ QMessageBox::warning(this,tr("Warning"),tr("user name or password error!"),QMessageBox::Yes); } } 加入的这个函数的作用就是移除字符串开头和结尾的空白字符。 12.最后,如果输入错误了,重新回到登录对话框时,我们希望可以使用户名和 密码框清空并且光标自动跳转到用户名输入框,最终的登录按钮的单击事件的槽 函数如下: void loginDlg::on_loginBtn_clicked() { if(m_ui->usrLineEdit->text().trimmed()==tr("qt")&&m_ui->pwdLineEdit-> text()==tr("123456")) //判断用户名和密码是否正确 accept(); else{ QMessageBox::warning(this,tr("Warning"),tr("user name or password error!"),QMessageBox::Yes); //如果不正确,弹出警告对话框 m_ui->usrLineEdit->clear();//清空用户名输入框 m_ui->pwdLineEdit->clear();//清空密码输入框 m_ui->usrLineEdit->setFocus();//将光标转到用户名输入框 } } 四、Qt Creator 添加菜单图标(原创) 在下面的几节,我们讲述Qt 的MainWindow 主窗口部件。这一节只讲述怎样在其 上的菜单栏里添加菜单和图标。 1.新建Qt4 Gui Application 工程,将工程命名为MainWindow,其他选项默认 即可。 生成的窗口界面如下图。其中最上面的为菜单栏。 2.我们在Type Here 那里双击,并输入“文件(&F)”,这样便可将其文件菜单的 快捷键设为Alt+F。(注意括号最好用英文半角输入,这样看着美观) 3.输入完按下Enter 键确认即可,然后在子菜单中加入“新建(&N)”,确定后, 效果如下图。 4.我们在下面的动作编辑窗口可以看到新加的“新建”菜单。 5.双击这一条,可打开它的编辑对话框。我们看到Icon 项,这里可以更改“新 建”菜单的图标。 6.我们点击后面的...号,进入资源选择器,但现在这里面是空的。所以下面我 们需要给该工程添加外部资源。 7.添加资源有两种方法。一种是直接添加系统提供的资源文件,然后选择所需图 标。另一种是自己写资源文件。我们主要介绍第一种。新建Qt Resources file, 将它命名为menu。其他默认。 8.添加完后如下图。可以看到添加的文件为menu.qrc。 9.我们最好先在工程文件夹里新建一个文件夹,如images,然后将需要的图标 文件放到其中。 10.在Qt Creator 的menu.qrc 文件中,我们点击Add 下拉框,选择Add Prefix。 我们可以将生成的/new/prefix 前缀改为其他名字,如/File。 11.然后再选择Add 下拉框,选择Add Files。再弹出的对话框中,我们到新建 的images 文件夹下,将里面的图标文件全部添加过来。 12.添加完成后,我们在Qt Creator 的File 菜单里选择Save All 选项,保存所 做的更改。 13.这时再打开资源选择器,可以看到我们的图标都在这里了。(注意:如果不显 示,可以按一下上面的Reload 按钮) 14.我们将new.png 作为“新建”菜单的图标,然后点击Shortcut,并按下 Crtl+N,便能将Crtl+N 作为“新建”菜单的快捷键。 15.这时打开文件菜单,可以看到“新建”菜单已经有图标了。 运行程序后效果如下。 16.我们在工程文件夹下查看建立的menu.qrc 文件,可以用写字板将它打开。 其具体内容如下。 附:第二种添加资源文件的方法。 1.首先右击工程文件夹,在弹出的菜单中选择Add New,添加新文件。也可以用 File 中的添加新文件。 2.我们选择文本文件。 3.将文件名设置为menu.qrc。 4.添加好文件后将其内容修改如下。可以看到就是用第一种方法生成的 menu.qrc 文件的内容。 5.保存文件后,在资源管理器中可以看到添加的图标文件。 五、Qt Creator 布局管理器的使用(原创) 上篇讲解了如何在Qt Creator 中添加资源文件,并且为菜单添加了图标。这次 我们先对那个界面进行一些完善,然后讲解一些布局管理器的知识。 首先对菜单进行完善。 1.我们在上一次的基础上再加入一些常用菜单。 “文件”的子菜单如下图。中间的分割线可以点击Add Separator 添加。 “编辑”子菜单的内容如下。 “帮助”子菜单的内容如下。 2.我们在动作编辑器中对各个菜单的属性进行设置。 如下图。 3.我们拖动“新建”菜单的图标,将其放到工具栏里。 拖动“新建”菜单的图标。 将其放到菜单栏下面的工具栏里。 4.我们再添加其他几个图标。使用Append Separator 可以添加分割线。 5.最终效果如下。如果需要删除图标,可以在图标上点击右键选择Remove action 即可。 下面简述一下布局管理器。 (这里主要以垂直布局管理器进行讲解,其他类型管理器用法与之相同,其效 果可自己验证。) 1.在左边的器件栏里拖入三个PushButton 和一个Vertical Layout(垂直布局 管理器)到中心面板。如下图。 2.将这三个按钮放入垂直布局管理器,效果如下。可以看到按钮垂直方向排列, 并且宽度可以改变,但高度没有改变。 3.我们将布局管理器整体选中,按下上面工具栏的Break Layout 按钮,便可取 消布局管理器。(我们当然也可以先将按钮移出,再按下Delete 键将布局管理 器删除。) 4.下面我们改用分裂器部件(QSplitter)。 先将三个按钮同时选中,再按下上面工具栏的Lay Out Vertically in Splitter (垂直分裂器)。 效果如下图。可以看到按钮的大小可以随之改动。这也就是分裂器和布局管理器 的分别。 5.其实布局管理器不但能控制器件的布局,还有个很重要的用途是,它能使器件 的大小随着窗口大小的改变而改变。 我们先在主窗口的中心拖入一个文本编辑器Text Edit。 这时直接运行程序,效果如下。可以看到它的大小和位置不会随着窗口改变。 下面我们选中主窗口部件,然后在空白处点击鼠标右键,选择Layout->Lay Out in a Grid,使整个主窗口的中心区处于网格布局管理器中。 可以看到,这时文本编辑器已经占据了整个主窗口的中心区。 运行一下程序,可以看到无论怎样拉伸窗口,文本编辑框的大小都会随之改变。 我们在这里一共讲述了三种使用布局管理器的方法,一种是去器件栏添加,一 种是用工具栏的快捷图标,还有一种是使用鼠标右键的选项。 程序中用到的图标是我从Ubuntu 中复制的,可以到 http://www.qtcn.org/bbs/read.php?tid=23252&page=1&toread=1 下载到。 六、Qt Creator 实现文本编辑(原创) 前面已经将界面做好了,这里我们为其添加代码,实现文本编辑的功能。 首先实现新建文件,文件保存,和文件另存为的功能。 (我们先将上次的工程文件夹进行备份,然后再对其进行修改。在写较大的程序 时,经常对源文件进行备份,是个很好的习惯。) 在开始正式写程序之前,我们先要考虑一下整个流程。因为我们要写记事本一 样的软件,所以最好先打开windows 中的记事本,进行一些简单的操作,然后 考虑怎样去实现这些功能。再者,再强大的软件,它的功能也是一个一个加上 去的,不要设想一下子写出所有的功能。我们这里先实现新建文件,保存文件, 和文件另存为三个功能,是因为它们联系很紧,而且这三个功能总的代码量也 不是很大。 因为三个功能之间的关系并不复杂,所以我们这里便不再画流程图,而只是简 单描述一下。 新建文件,那么如果有正在编辑的文件,是否需要保存呢? 如果需要进行保存,那这个文件以前保存过吗?如果没有保存过,就应该先将其 另存为。 下面开始按这些关系写程序。 1.打开Qt Creator,在File 菜单中选择Open,然后在工程文件夹中打开 MainWindow.pro 工程文件。 先在main.cpp 文件中加入以下语句,让程序中可以使用中文。 在其中加入#include 头文件包含,再在主函数中加入下面一行: QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); 这样在程序中使用中文,便能在运行时显示出来了。更改后文件如下图。 2.在mainwindow.h 文件中的private 下加入以下语句。 bool isSaved; //为true 时标志文件已经保存,为false 时标志文件尚未保存 QString curFile; //保存当前文件的文件名 void do_file_New(); //新建文件 void do_file_SaveOrNot(); //修改过的文件是否保存 void do_file_Save(); //保存文件 void do_file_SaveAs(); //文件另存为 bool saveFile(const QString& fileName); //存储文件 这些是变量和函数的声明。其中isSaved 变量起到标志的作用,用它来标志文件 是否被保存过。然后我们再在相应的源文件里进行这些函数的定义。 3.在mainwindow.cpp 中先加入头文件#include ,然后在构造函数里添 加以下几行代码。 isSaved = false; //初始化文件为未保存过状态 curFile = tr("未命名.txt"); //初始化文件名为“未命名.txt” setWindowTitle(curFile); //初始化主窗口的标题 这是对主窗口进行初始化。效果如下。 4.然后添加“新建”操作的函数定义。 void MainWindow::do_file_New() //实现新建文件的功能 { do_file_SaveOrNot(); isSaved = false; curFile = tr("未命名.txt"); setWindowTitle(curFile); ui->textEdit->clear(); //清空文本编辑器 ui->textEdit->setVisible(true); //文本编辑器可见 } 新建文件,先要判断正在编辑的文件是否需要保存。然后将新建的文件标志为未 保存过状态。 5.再添加do_file_SaveOrNot 函数的定义。 void MainWindow::do_file_SaveOrNot() //弹出是否保存文件对话框 { if(ui->textEdit->document()->isModified()) //如果文件被更改过,弹出保 存对话框 { QMessageBox box; box.setWindowTitle(tr("警告")); box.setIcon(QMessageBox::Warning); box.setText(curFile + tr(" 尚未保存,是否保存?")); box.setStandardButtons(QMessageBox::Yes | QMessageBox::No); if(box.exec() == QMessageBox::Yes) //如果选择保存文件,则执行保存操作 do_file_Save(); } } 这个函数实现弹出一个对话框,询问是否保存正在编辑的文件。 6.再添加“保存”操作的函数定义。 void MainWindow::do_file_Save() //保存文件 { if(isSaved){ //如果文件已经被保存过,直接保存文件 saveFile(curFile); } else{ do_file_SaveAs(); //如果文件是第一次保存,那么调用另存为 } } 对文件进行保存时,先判断其是否已经被保存过,如果没有被保存过,就要先对 其进行另存为操作。 7.下面是“另存为”操作的函数定义。 void MainWindow::do_file_SaveAs() //文件另存为 { QString fileName = QFileDialog::getSaveFileName(this,tr("另存为 "),curFile); //获得文件名 if(!fileName.isEmpty()) //如果文件名不为空,则保存文件内容 { saveFile(fileName); } } 这里弹出一个文件对话框,显示文件另存为的路径。 8.下面是实际文件存储操作的函数定义。 bool MainWindow::saveFile(const QString& fileName) //保存文件内容,因为可能保存失败,所以具有返回值,来表明是否保存成功 { QFile file(fileName); if(!file.open(QFile::WriteOnly | QFile::Text)) //以只写方式打开文件,如果打开失败则弹出提示框并返回 { QMessageBox::warning(this,tr("保存文件"), tr("无法保存文件 %1:\n %2").arg(fileName) .arg(file.errorString())); return false; } //%1,%2 表示后面的两个arg 参数的值 QTextStream out(&file); //新建流对象,指向选定的文件 out << ui->textEdit->toPlainText(); //将文本编辑器里的内容以纯文本 的形式输出到流对象中 isSaved = true; curFile = QFileInfo(fileName).canonicalFilePath(); //获得文件的标准路 径 setWindowTitle(curFile); //将窗口名称改为现在窗口的路径 return true; } 这个函数实现将文本文件进行存储。下面我们对其中的一些代码进行讲解。 QFile file(fileName);一句,定义了一个QFile 类的对象file,其中filename 表明这个文件就是我们保存的的文件。然后我们就可以用file 代替这个文件, 来进行一些操作。Qt 中文件的操作和C,C++很相似。对于QFile 类对象怎么使 用,我们可以查看帮助。 点击Qt Creator 最左侧的Help,在其中输入QFile, 在搜索到的列表中选择QFile 即可。这时在右侧会显示出QFile 类中所有相关信 息以及他们的用法和说明。 // 我们往下拉,会发现下面有关于怎么读取文件的示例代码。 // // 再往下便能看到用QTextStream 类对象,进行字符串输入的例子。下面也提到了 QFileInfo 和QDir 等相关的类,我们可以点击它们去看一下具体的使用说明。 // 上面只是做了一个简单的说明。以后我们对自己不明白的类都可以去帮助里进行 查找,这也许是我们以后要做的最多的一件事了。对于其中的英文解释,我们最 好想办法弄明白它的大意,其实网上也有一些中文的翻译,但最好还是从一开始 就尝试着看英文原版的帮助,这样以后才不会对中文翻译产生依赖。 我们这次只是很简单的说明了一下怎样使用帮助文件,这不表明 它不重要,而是因为这里不可能将每个类的帮助都解释一遍,没有那么多时间, 也没有那么大的篇幅。而更重要的是因为,我们这个教程只是引你入门,所以很 多东西需要自己去尝试。 在以后的教程里,如果不是特殊情况,就不会再对其中的类进行 详细解释,文章中的重点是对整个程序的描述,其中不明白的类,自己查看帮助。 9.双击mainwindow.ui 文件,在图形界面窗口下面的Action Editor 动作编辑 器里,我们右击“新建”菜单一条,选择Go to slot,然后选择triggered(), 进入其触发事件槽函数。 同理,进入其他两个菜单的槽函数,将相应的操作的函数写入槽函数中。如下。 void MainWindow::on_action_New_triggered() //信号和槽的关联 { do_file_New(); } void MainWindow::on_action_Save_triggered() { do_file_Save(); } void MainWindow::on_action_SaveAs_triggered() { do_file_SaveAs(); } 这时点击运行,就能够实现新建文件,保存文件,文件另存为的功能了。 然后实现打开,关闭,退出,撤销,复制,剪切,粘贴的功能。 先备份上次的工程文件,然后再将其打开。 1.先在mainwindow.h 文件中加入函数的声明。 void do_file_Open(); //打开文件 bool do_file_Load(const QString& fileName); //读取文件 2.再在mainwindow.cpp 文件中写函数的功能实现。 void MainWindow::do_file_Open()//打开文件 { do_file_SaveOrNot();//是否需要保存现有文件 QString fileName = QFileDialog::getOpenFileName(this); //获得要打开的文件的名字 if(!fileName.isEmpty())//如果文件名不为空 { do_file_Load(fileName); } ui->textEdit->setVisible(true);//文本编辑器可见 } bool MainWindow::do_file_Load(const QString& fileName) //读取文件 { QFile file(fileName); if(!file.open(QFile::ReadOnly | QFile::Text)) { QMessageBox::warning(this,tr("读取文件"),tr("无法读取文件 %1:\n%2.").arg(fileName).arg(file.errorString())); return false; //如果打开文件失败,弹出对话框,并返回 } QTextStream in(&file); ui->textEdit->setText(in.readAll()); //将文件中的所有内容都 写到文本编辑器中 curFile = QFileInfo(fileName).canonicalFilePath(); setWindowTitle(curFile); return true; } 上面的打开文件函数与文件另存为函数相似,读取文件的函数与文件存储函数相 似。 3.然后按顺序加入更菜单的关联函数,如下。 void MainWindow::on_action_Open_triggered() //打开操作 { do_file_Open(); } // void MainWindow::on_action_Close_triggered() //关闭操作 { do_file_SaveOrNot(); ui->textEdit->setVisible(false); } // void MainWindow::on_action_Quit_triggered() //退出操作 { on_action_Close_triggered(); //先执行关闭操作 qApp->quit(); //再退出系统,qApp 是指向应用程序的全局指针 } // void MainWindow::on_action_Undo_triggered() //撤销操作 { ui->textEdit->undo(); } // void MainWindow::on_action_Cut_triggered() //剪切操作 { ui->textEdit->cut(); } // void MainWindow::on_action_Copy_triggered() //复制操作 { ui->textEdit->copy(); } // void MainWindow::on_action_Past_triggered() //粘贴操作 { ui->textEdit->paste(); } 因为复制,撤销,全选,粘贴,剪切等功能,是TextEdit 默认就有的,所以我 们只需调用一下相应函数就行。 到这里,除了查找和帮助两个菜单的功能没有加上以外,其他功能都已经实现了。 七、Qt Creator 实现文本查找(原创) 现在加上查找菜单的功能。因为这里要涉及关于Qt Creator 的很多实用功能, 所以单独用一篇文章来介绍。 以前都用设计器设计界面,而这次我们用代码实现一个简单的查找对话框。对于 怎么实现查找功能的,我们详细地分步说明了怎么进行类中方法的查找和使用。 其中也将Qt Creator 智能化的代码补全功能和程序中函数的声明位置和定义位 置间的快速切换进行了介绍。 1.首先还是保存以前的工程,然后再将其打开。 我们发现Qt Creator 默认的字体有点小,可以按下Ctrl 键的同时按两下+键, 来放大字体。也可以选择Edit->Advanced->Increase Font Size。 2.在mainwindow.h 中加入#include 的头文件包含,在private 中 添加 QLineEdit *find_textLineEdit; //声明一个行编辑器,用于输入要查找的内容 在private slots 中添加 void show_findText(); 在该函数中实现查找字符串的功能。 3.我们进入查找菜单的触发事件槽函数,更改如下。 void MainWindow::on_action_Find_triggered() { QDialog *findDlg = new QDialog(this); //新建一个对话框,用于查找操作,this 表明它的父窗口是MainWindow。 findDlg->setWindowTitle(tr("查找")); //设置对话框的标题 find_textLineEdit = new QLineEdit(findDlg); //将行编辑器加入到新建的查找对话框中 QPushButton *find_Btn = new QPushButton(tr("查找下一个"),findDlg); //加入一个“查找下一个”的按钮 QVBoxLayout* layout = new QVBoxLayout(findDlg); layout->addWidget(find_textLineEdit); layout->addWidget(find_Btn); //新建一个垂直布局管理器,并将行编辑器和按钮加入其中 findDlg ->show(); //显示对话框 connect(find_Btn,SIGNAL(clicked()),this,SLOT(show_findText())); //设置“查找下一个”按钮的单击事件和其槽函数的关联 } 这里我们直接用代码生成了一个对话框,其中一个行编辑器可以输入要查找的字 符,一个按钮可以进行查找操作。我们将这两个部件放到了一个垂直布局管理器 中。然后显示这个对话框。并设置了那个按钮单击事件与show_findText()函数 的关联。 5.下面我们开始写实现查找功能的show_findText()函数。 void MainWindow::show_findText()//“查找下一个”按钮的槽函数 { QString findText = find_textLineEdit->text(); //获取行编辑器中的内容 } 先用一个QString 类的对象获得要查找的字符。然后我们一步一步写查找操作的 语句。 6.在下一行写下ui,然后直接按下键盘上的“<.”键,这时系统会根据是否是 指针对象而自动生成“->”或“.”,因为ui 是指针对象,所以自动生成“->” 号,而且弹出了ui 中的所有部件名称的列表。如下图。 7.我们用向下的方向键选中列表中的textEdit。或者我们可以先输入text,这 时能缩减列表的内容。 8.如上图我们将鼠标放到textEdit 上,这时便出现了textEdit 的类名信息, 且后面出现一个F1 按键。我们按下键盘上的F1,便能出现textEdit 的帮助。 9.我们在帮助中向下拉,会发现这里有一个find 函数。 10.我们点击find,查看其详细说明。 11.可以看到find 函数可以实现文本编辑器中字符串的查找。其中有一个 FindFlags 的参数,我们点击它查看其说明。 12.可以看到它是一个枚举变量(enum),有三个选项,第一项是向后查找(即 查找光标以前的内容,这里的前后是相对的说法,比如第一行已经用完了,光 标在第二行时,把第一行叫做向后。),第二项是区分大小写查找,第三项是 查找全部。 13.我们选用第一项,然后写出下面的语句。 ui->textEdit->find(findText,QTextDocument::FindBackward); //将行编辑器中的内容在文本编辑器中进行查找 当我们刚打出“f”时,就能自动弹出textEdit 类的相关属性和方法。 可以看到,当写完函数名和第一个“(”后,系统会自动显示出该函数的函数原 型,这样可以使我们减少出错。 14.这时已经能实现查找的功能了。但是我们刚才看到find 的返回值类型是bool 型,而且,我们也应该为查找不到字符串作出提示。 if(!ui->textEdit->find(findText,QTextDocument::FindBackward)) { QMessageBox::warning(this,tr("查找"),tr("找不到 %1") .arg(findText); } 因为查找失败返回值是false,所以if 条件加了“!”号。在找不到时弹出警 告对话框。 15.到这里,查找功能就基本上写完了。show_findText()函数的内容如下。 我们会发现随着程序功能的增强,其中的函数也会越来越多,我们都会为查找 某个函数的定义位置感到头疼。而在Qt Creator 中有几种快速定位函数的方法, 我们这里讲解三种。 第一,在函数声明的地方直接跳转到函数定义的地方。 如在do_file_Load 上点击鼠标右键,在弹出的菜单中选择Follow Symbol under Cursor 或者下面的Switch between Method Declaration/Definition。 这时系统就会自动跳转到函数定义的位置。如下图。 第二,快速查找一个文件里的所有函数。 我们可以点击窗口最上面的下拉框,这里会显示本文件中所有函数的列表。 第三,利用查找功能。 1.我们先将鼠标定位到一个函数名上。 2.然后选择Edit->Find/Replace->Find Dialog。 3.这时会出现一个查找对话框,可以看到要查找的函数名已经写在里面了。 4.当我们按下Search 按钮后,会在查找结果窗口显示查找到的结果。 5.我们点击第二个文件。会发现在这个文件中有两处关键字是高亮显示。 6.我们双击第二项,就会自动跳转到函数的定义处。 文章讲到这里,我们已经很详细地说明了怎样去使用一个类里面没有用过的方法 函数;也说明了Qt Creator 中的一些便捷操作。可以看到,Qt Creator 开发环 境,有很多很人性化的设计,我们应该熟练应用它们。 在以后的文章中,我们不会再很详细地去用帮助来说明一个函数是 怎么来的,该怎么用,这些应该自己试着去查找。 八、Qt Creator 实现状态栏显示(原创) 在程序主窗口Mainwindow 中,有菜单栏,工具栏,中心部件和状态栏。前面几 个已经讲过了,这次讲解状态栏的使用。 程序中有哪些不明白的类或函数,请自己查看帮助。 1.我们在mainwindow.h 中做一下更改。 加入头文件包含: #include 加入私有变量和函数: QLabel* first_statusLabel; //声明两个标签对象,用于显示状态信息 QLabel* second_statusLabel; void init_statusBar(); //初始化状态栏 加入一个槽函数声明:void do_cursorChanged(); //获取光标位置信息 2.在mainwindow.cpp 中加入状态栏初始化函数的定义。 void MainWindow::init_statusBar() { QStatusBar* bar = ui->statusBar; //获取状态栏 first_statusLabel = new QLabel; //新建标签 first_statusLabel->setMinimumSize(150,20); //设置标签最小尺寸 first_statusLabel->setFrameShape(QFrame::WinPanel); //设置标签形状 first_statusLabel->setFrameShadow(QFrame::Sunken); //设置标签阴影 second_statusLabel = new QLabel; second_statusLabel->setMinimumSize(150,20); second_statusLabel->setFrameShape(QFrame::WinPanel); second_statusLabel->setFrameShadow(QFrame::Sunken); bar->addWidget(first_statusLabel); bar->addWidget(second_statusLabel); first_statusLabel->setText(tr("欢迎使用文本编辑器")); //初始化内容 second_statusLabel->setText(tr("yafeilinux 制作!")); } 这里将两个标签对象加入到了主窗口的状态栏里,并设置了他们的外观和初值。 3.在构造函数里调用状态栏初始化函数。 init_statusBar(); 这时运行程序,效果如下。 4.在mainwindow.cpp 中加入获取光标位置的函数的定义。 void MainWindow::do_cursorChanged() { int rowNum = ui->textEdit->document()->blockCount(); //获取光标所在行的行号 const QTextCursor cursor = ui->textEdit->textCursor(); int colNum = cursor.columnNumber(); //获取光标所在列的列号 first_statusLabel->setText(tr("%1 行 %2 列").arg(rowNum).arg(colNum)); //在状态栏显示光标位置 } 这个函数可获取文本编辑框中光标的位置,并显示在状态栏中。 5.在构造函数添加光标位置改变信号的关联。 connect(ui->textEdit,SIGNAL(cursorPositionChanged()),this,SLOT(do_cur sorChanged())); 这时运行程序。效果如下。 6.在do_file_Load 函数的最后添加下面语句。 second_statusLabel->setText(tr("打开文件成功")); 7.在saveFile 函数的最后添加以下语句。 second_statusLabel->setText(tr("保存文件成功")); 8.在on_action_Find_triggered 函数的后面添加如下语句。 second_statusLabel->setText(tr("正在进行查找")); 9.在on_action_Close_triggered 函数最后添加如下语句。 first_statusLabel->setText(tr("文本编辑器已关闭")); second_statusLabel->setText(tr("yafeilinux 制作!")); 到这里整个文本编辑器的程序就算写完了。我们这里没有写帮助菜单的功能实 现,大家可以自己添加。而且程序中也有很多漏洞和不完善的地方,如果有兴 趣,大家也可以自己修改。因为时间和篇幅的原因,我们这里就不再过多的讲 述。 九、Qt Creator 中鼠标键盘事件的处理实现自定义鼠标指针(原创) 我们前面一直在说信号,比方说用鼠标按了一下按钮,这样就会产生一个按钮的 单击信号,然后我们可以在相应的槽函数里进行相应功能的设置。其实在按下鼠 标后,程序要先接收到鼠标按下的事件,然后将这个事件按默认的设置传给按钮。 可以看出,事件和信号并不是一回事,事件比信号更底层。而我们以前把单击按 钮也叫做事件,这是不确切的,不过大家都知道是什么意思,所以当时也没有细 分。 Qt 中的事件可以在QEvent 中查看。下面我们只是找两个例子来进行简单的演示。 1.还是先建立一个Qt4 Gui Application 工程,我这里起名为event。 2.添加代码,让程序中可以使用中文。 即在main.cpp 文件中加入#include 的头文件包含。 再在下面的主函数里添加 QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); 3.在mainwindow.h 文件中做一下更改。 添加#include 头文件。因为这样就包含了QtGui 中所有的子文件。 在public 中添加两个函数的声明 void mouseMoveEvent(QMouseEvent *); void keyPressEvent(QKeyEvent *); 4.我们在mainwindow.ui 中添加一个Label 和一个PushButton,将他们拉长点, 因为一会要在上面显示标语。 5.在mainwindow.cpp 中的构造函数里添加两个部件的显示文本。 ui->label->setText(tr("按下键盘上的A 键试试!")); ui->pushButton->setText(tr("按下鼠标的一个键,然后移动鼠标试试")); 6.然后在下面进行两个函数的定义。 /*以下是鼠标移动事件*/ void MainWindow::mouseMoveEvent(QMouseEvent *m) {//这里的函数名和参数不能更改 QCursor my(QPixmap("E:/Qt/Qt-Creator-Example/event/time.png")); //为鼠标指针选择图片,注意这里要用绝对路径,且要用“/”,而不能用“\” QApplication::setOverrideCursor(my); //将鼠标指针更改为自己设置的图片 int x = m->pos().x(); int y = m->pos().y(); //获取鼠标现在的位置坐标 ui->pushButton->setText(tr("鼠标现在的坐标是(%1,%2), 哈哈好玩吧 ").arg(x).arg(y)); //将鼠标的位置坐标显示在按钮上 ui->pushButton->move(m->pos()); //让按钮跟随鼠标移动 } /*以下是键盘按下事件*/ void MainWindow::keyPressEvent(QKeyEvent *k) { if(k->key() == Qt::Key_A) //判断是否是A 键按下 { ui->label->setPixmap(QPixmap("E:/Qt/Qt-Creator-Example/event/linux.jp g")); ui->label->resize(100,100); //更改标签图片和大小 } } 注意:这两个函数不是自己新建的,而是对已有函数的重定义,所有函数名和参 数都不能改。第一个函数对鼠标移动事件进行了重写。其中实现了鼠标指针的更 改,和按钮跟随鼠标移动的功能。 第二个函数对键盘的A 键按下实现了新的功能。 效果如下。 按下鼠标的一个键,并移动鼠标。 按下键盘上的A 键。 十、Qt Creator 中实现定时器和产生随机数(原创) 有两种方法实现定时器。 第一种。自己建立关联。 1.新建Gui 工程,工程名可以设置为timer。并在主界面上添加一个标签label, 并设置其显示内容为“0000-00-00 00:00:00 星期日”。 2.在mainwindow.h 中添加槽函数声明。 private slots: void timerUpDate(); 3.在mainwindow.cpp 中添加代码。 添加#include 的头文件包含,这样就包含了QtCore 下的所有文件。 构造函数里添加代码: QTimer *timer = new QTimer(this); //新建定时器 connect(timer,SIGNAL(timeout()),this,SLOT(timerUpDate())); //关联定时器计满信号和相应的槽函数 timer->start(1000); //定时器开始计时,其中1000 表示1000ms 即1 秒 4.然后实现更新函数。 void MainWindow::timerUpDate() { QDateTime time = QDateTime::currentDateTime(); //获取系统现在的时间 QString str = time.toString("yyyy-MM-dd hh:mm:ss dddd"); //设置系统时间显示格式 ui->label->setText(str); //在标签上显示时间 } 5.运行程序,效果如下。 第二种。使用事件。(有点像单片机中的定时器啊) 1.新建工程。在窗口上添加两个标签。 2.在main.cpp 中添加代码,实现中文显示。 #include QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); 3.在mainwindow.h 中添加代码。 void timerEvent(QTimerEvent *); 4.在mainwindow.cpp 中添加代码。 添加头文件#include 在构造函数里添加以下代码。 startTimer(1000); //其返回值为1,即其timerId 为1 startTimer(5000);//其返回值为2,即其timerId 为2 startTimer(10000); //其返回值为3,即其timerId 为3 添加了三个定时器,它们的timerId 分别为1,2,3。注意,第几个定时器的返 回值就为几。所以要注意定时器顺序。 在下面添加函数实现。 void MainWindow::timerEvent(QTimerEvent *t) //定时器事件 { switch(t->timerId()) //判断定时器的句柄 { case 1 : ui->label->setText(tr("每秒产生一个随机数: %1").arg(qrand()%10));break; case 2 : ui->label_2->setText(tr("5 秒后软件将关闭"));break; case 3 : qApp->quit();break; //退出系统 } } 这里添加了三个定时器,并都在定时器事件中判断它们,然后执行相应的功能。 这样就不用每个定时器都写一个关联函数和槽函数了。 随机数的实现: 上面程序中的qrand(),可以产生随机数,qrand()%10 可以产生0-9 之间的随机 数。要想产生100 以内的随机数就%100。以此类推。 但这样每次启动程序后,都按同一种顺序产生随机数。为了实现每次启动程序产 生不同的初始值。我们可以使用qsrand(time(0));实现设置随机数的初值,而 程序每次启动时time(0)返回的值都不同,这样就实现了产生不同初始值的功 能。 我们将qsrand(time(0));一句加入构造函数里。 程序最终运行效果如下。 十一、Qt 2D 绘图(一)绘制简单图形(原创) 声明:本文原创于yafeilinux 的百度博客,http://hi.baidu.com/yafeilinux 转载请注明出处。 说明:以后使用的环境为基于Qt 4.6 的Qt Creator 1.3.0 windows 版本 本文介绍在窗口上绘制最简单的图形的方法。 1.新建Qt4 Gui Application 工程,我这里使用的工程名为painter01,选用 QDialog 作为Base class 2.在dialog.h 文件中声明重绘事件函数void paintEvent(QPaintEvent *); 3.在dialog.cpp 中添加绘图类QPainter 的头文件包含#include 4.在下面进行该函数的重定义。 void Dialog::paintEvent(QPaintEvent *) { QPainter painter(this); painter.drawLine(0,0,100,100); } 其中创建了QPainter 类对象,它是用来进行绘制图形的,我们这里画了一条线 Line,其中的参数为线的起点(0,0),和终点(100,100)。这里的数值指的 是像素,详细的坐标设置我们以后再讲,这里知道(0,0)点指的是窗口的左上 角即可。运行效果如下: 5.在qt 的帮助里可以查看所有的绘制函数,而且下面还给出了相关的例子。 6.我们下面将几个知识点说明一下,帮助大家更快入门。 将函数改为如下: void Dialog::paintEvent(QPaintEvent *) { QPainter painter(this); QPen pen; //画笔 pen.setColor(QColor(255,0,0)); QBrush brush(QColor(0,255,0,125)); //画刷 painter.setPen(pen); //添加画笔 painter.setBrush(brush); //添加画刷 painter.drawRect(100,100,200,200); //绘制矩形 } 这里的pen 用来绘制边框,brush 用来进行封闭区域的填充,QColor 类用来提供 颜色,我们这里使用了rgb 方法来生成颜色,即(red,green,blue),它们取 值分别是0-255,例如(255,0,0)表示红色,而全0 表示黑色,全255 表示 白色。后面的(0,255,0,125),其中的125 是透明度(alpha)设置,其值 也是从0 到255,0 表示全透明。最后将画笔和画刷添加到painter 绘制设备中, 画出图形。这里的Rect 是长方形,其中的参数为(100,100)表示起始坐标, 200,200 表示长和宽。效果如下: 7.其实画笔和画刷也有很多设置,大家可以查看帮助。 QPainter painter(this); QPen pen(Qt::DotLine); QBrush brush(Qt::blue); brush.setStyle(Qt::HorPattern); painter.setPen(pen); painter.setBrush(brush); painter.drawRect(100,100,200,200); 这里我们设置了画笔的风格为点线,画刷的风格为并行横线,效果如下: 在帮助里可以看到所有的风格。 我们这里用了Qt::blue,Qt 自定义的几个颜色如下: 8.画弧线,这是帮助里的一个例子。 QRectF rectangle(10.0, 20.0, 80.0, 60.0); //矩形 int startAngle = 30 * 16; //起始角度 int spanAngle = 120 * 16; //跨越度数 QPainter painter(this); painter.drawArc(rectangle, startAngle, spanAngle); 这里要说明的是,画弧线时,角度被分成了十六分之一,就是说,要想为30 度, 就得是30*16。它有起始角度和跨度,还有位置矩形,要想画出自己想要的弧线, 就要有一定的几何知识了。这里就不再祥述。 十二、Qt 2D 绘图(二)渐变填充(原创) 声明:本文原创于yafeilinux 的百度博客,http://hi.baidu.com/yafeilinux 转载请注明出处。 在qt 中提供了三种渐变方式,分别是线性渐变,圆形渐变和圆锥渐变。如果能 熟练应用它们,就能设计出炫目的填充效果。 线性渐变: 1.更改函数如下: void Dialog::paintEvent(QPaintEvent *) { QPainter painter(this); QLinearGradient linearGradient(100,150,300,150); //从点(100,150)开始到点(300,150)结束,确定一条直线 linearGradient.setColorAt(0,Qt::red); linearGradient.setColorAt(0.2,Qt::black); linearGradient.setColorAt(0.4,Qt::yellow); linearGradient.setColorAt(0.6,Qt::white); linearGradient.setColorAt(0.8,Qt::green); linearGradient.setColorAt(1,Qt::blue); //将直线开始点设为0,终点设为1,然后分段设置颜色 painter.setBrush(linearGradient); painter.drawRect(100,100,200,100); //绘制矩形,线性渐变线正好在矩形的水平中心线上 } 效果如下: 圆形渐变: 1.更改函数内容如下: QRadialGradient radialGradient(200,100,100,200,100); //其中参数分别为圆形渐变的圆心(200,100),半径100,和焦点(200, 100) //这里让焦点和圆心重合,从而形成从圆心向外渐变的效果 radialGradient.setColorAt(0,Qt::black); radialGradient.setColorAt(1,Qt::yellow); //渐变从焦点向整个圆进行,焦点为起始点0,圆的边界为1 QPainter painter(this); painter.setBrush(radialGradient); painter.drawEllipse(100,0,200,200); //绘制圆,让它正好和上面的圆形渐变的圆重合 效果如下: 2.要想改变填充的效果,只需要改变焦点的位置和渐变的颜色位置即可。 改变焦点位置:QRadialGradient radialGradient(200,100,100,100,100); 效果如下: 锥形渐变: 1.更改函数内容如下: //圆锥渐变 QConicalGradient conicalGradient(50,50,0); //圆心为(50,50),开始角度为0 conicalGradient.setColorAt(0,Qt::green); conicalGradient.setColorAt(1,Qt::white); //从圆心的0 度角开始逆时针填充 QPainter painter(this); painter.setBrush(conicalGradient); painter.drawEllipse(0,0,100,100); 效果如下: 2.可以更改开始角度,来改变填充效果 QConicalGradient conicalGradient(50,50,30); 开始角度设置为30 度,效果如下: 其实三种渐变的设置都在于焦点和渐变颜色的位置,如果想设计出漂亮的渐变 效果,还要有美术功底啊! 十二、Qt 2D 绘图(三)绘制文字(原创) 声明:本文原创于yafeilinux 的百度博客,http://hi.baidu.com/yafeilinux 转载请注明出处。 接着上一次的教程,这次我们学习在窗体上绘制文字。 1.绘制最简单的文字。 我们更改重绘函数如下: void Dialog::paintEvent(QPaintEvent *) { QPainter painter(this); painter.drawText(100,100,"yafeilinux"); } 我们在(100,100)的位置显示了一行文字,效果如下。 2.为了更好的控制字体的位置。我们使用另一个构造函数。在帮助里查看 drawText,如下。 这里我们看到了构造函数的原型和例子。其中的flags 参数可以控制字体在矩形 中的位置。我们更改函数内容如下。 void Dialog::paintEvent(QPaintEvent *) { QPainter painter(this); QRectF ff(100,100,300,200); //设置一个矩形 painter.drawRect(ff); //为了更直观地看到字体的位置,我们绘制出这个矩形 painter.setPen(QColor(Qt::red)); //设置画笔颜色为红色 painter.drawText(ff,Qt::AlignHCenter,"yafeilinux"); //我们这里先让字体水平居中 } 效果如下。 可以看到字符串是在最上面水平居中的。如果想让其在矩形正中间,我们可以使 用Qt::AlignCenter。 这里我们也可以使用两个枚举变量进行按位与操作,例如可以使用 Qt::AlignBottom|Qt::AlignHCenter 实现让文字显示在矩形下面的正中间。效 果如下。 对于较长的字符串,我们也可以利用“\n”进行换行,例如"yafei\nlinux"。效 果如下。 3.如果要使文字更美观,我们就需要使用QFont 类来改变字体。先在帮助中查 看一下这个类。 可以看到它有好几个枚举变量来设置字体。下面的例子我们对主要的几个选项进 行演示。 更改函数如下。 void Dialog::paintEvent(QPaintEvent *) { QFont font("Arial",20,QFont::Bold,true); //设置字体的类型,大小,加粗,斜体 font.setUnderline(true); //设置下划线 font.setOverline(true); //设置上划线 font.setCapitalization(QFont::SmallCaps); //设置大小写 font.setLetterSpacing(QFont::AbsoluteSpacing,5); //设置间距 QPainter painter(this); painter.setFont(font); //添加字体 QRectF ff(100,100,300,200); painter.drawRect(ff); painter.setPen(QColor(Qt::red)); painter.drawText(ff,Qt::AlignCenter,"yafeilinux"); } 效果如下。 这里的所有字体我们可以在设计器中进行查看。如下。 基于Qt 4.6 的Qt Creator 1.3.0 环境变量设置(原创) 如果你以前安装过visual studio 2005 之类的软件,那么装上Qt Creator 1.3.0 后,编译运行其自带的演示程序时就可能出现如下图的,105 个错误,几十个警 告的问题。 我们查看输出窗口,如下图。会发现它居然显示VC98 之类的东西,就是说它并 没有去自己的include 文件夹 中查找文件。我们可以怀疑是系统环境变量的问题了。 点击Qt Creator 界面左侧的projects 图标,查看工程信息。这里我们主要查看 编辑环境Buid Environment,点击其右侧的show Details。 可以看到其中的include 和lib 均指向了virtual studio 文件夹中,我们需要 将其改正。 将他们都改为自己Qt Creator 安装目录下的相关路径,如下图。(要换成你的 安装路径) 改完后会发现新的设置已经显示出来了。 我们查看下面的Run Environment,发现它已经自己改过来了。 回到编辑界面,右击工程文件,在弹出的菜单上选择Clean project,清空以前 的编译信息。 然后运行Run qmake,生成Makefile 文件。 最后,点击run 或者build 都可,这时程序已经能正常编译运行了。 基于Qt 4.6 的Qt Creator 1.3.0 写helloworld 程序注意事项(原创) 注意:下面指的是在windows 下,linux 下的情况可进行相应改变 昨天Qt 4.6 和Qt Creator 1.3.0 正式版发布了,但是如果以前用过旧版本,就 可能出一些问题。 1.用debug 方式 如果你以前用了Qt 4.5 的Qt Creator,并且将QtCored4.dll,QtGuid4.dll, mingwm10.dll 等文件放到了C 盘的system 文件夹下。那么请先将它们删除,不 然编译不会通过。 编译完helloworld 程序后,如果要直接执行exe 文件,需要将安装目录(新版 Qt)下的qt/bin 目录下的QtCored4.dll,QtGuid4.dll,mingwm10.dll,和 libgcc_s_dw2-1.dll(这个是新增的)文件放在exe 文件夹中。或者将它们放到 系统的system 文件夹下。 2.选择release 方式 编译程序后生成exe 文件 1.需要Qt 安装目录下的qt/bin 目录中的QtGui4.dll ,Qt Core4.dll, libgcc_s_dw2-1.dll 以及mingwm10.dll 四个文件的支持,将它们拷贝到exe 文 件目录下。 2.程序中默认只支持png 图片,如果使用了gif,jpg 等格式的文件是显示不出 来的。需要将Qt 安装目录下的qt/plugins/目录中的imageformats 文件夹拷贝 到exe 文件目录下(注意是整个文件夹)。而imageformats 文件夹中只需要保 留你需要的文件,例如你只需要支持gif 文件,就只保留qgif4.dll 即可。 ‘Qt Creator 发布release 软件相关注意事项(原创) 注意:环境是windows 选择release 编译程序后生成exe 文件 1.需要Qt 安装目录下的qt/bin 目录中的QtGui4.dll 和 Qt Core4.dll 以及 mingwm10.dll 三个文件的支持,将它们拷贝到exe 文件目录下。 2.程序中默认只支持png 图片,如果使用了gif,jpg 等格式的文件是显示不出 来的。需要将Qt 安装目录下的qt/plugins/目录中的imageformats 文件夹拷贝 到exe 文件目录下(注意是整个文件夹)。而imageformats 文件夹中只需要保 留你需要的文件,例如你只需要支持gif 文件,就只保留qgif4.dll 即可。 Qt Creator 的 error: collect2: ld returned 1 exit status 问题 利用Qt Creator 1.2.1( Built on Sep 30 2009 at 05:21:42)编译 程序经常会出现error: collect2: ld returned 1 exit status 的错误,但是 自己的程序没有一点问题,怎么回事呢? 如果这时退出软件,再重新进入,打开刚才的工程,重新编译, 就不会出现刚才的错误了。这应该是Qt Creator 软件的问题吧! 后来发现是因为上次执行的程序还在运行,你打开windows 的任 务管理器中的进程可以看见你刚才运行的程序还在执行,我们看不见,是因为它 在后台执行着。出现这个现象,是因为你写的代码的问题,比如在main 函数里 用了w.show();语句,就可能出现界面一闪而过,但它并没有关闭,而是在后台 运行,所以再次运行时就会出错。我们可以在资源管理器中将该进程关闭,或者 像上面那样直接关闭Qt Creator。 示例: #include #include "widget.h" #include "logindlg.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); loginDlg m; if(m.exec()==QDialog::Accepted) { Widget w; w.show(); } return a.exec(); } 执行后就会在后台运行。这时如果修改了代码再次运行程序,就会出现上面的错 误。 在任务管理器中可以看见自己的程序: 将该进程结束,然后在重新运行,就不会出错了。 正确的代码应该这样写: int main(int argc, char *argv[]) { QApplication a(argc, argv); loginDlg m; Widget w; if(m.exec()==QDialog::Accepted) { w.show(); return a.exec(); } else return 0; //关闭整个程序 } 这样新建的对象w 就不是局部变量了,这样运行程序w 表示的窗口不会一闪而过, 会一直显示。程序也不会再出现上面的错误了。 QT 常用问题解答(转) 本文是我前几天一个网友告诉我的,当时看了感觉好,就保存下来。今天再次查 看,感觉有必要把文章分享给各位学习QT 的朋友,因为网上好用的QT 资源真的 好少。 1、如果在窗体关闭前自行判断是否可关闭 答:重新实现这个窗体的closeEvent()函数,加入判断操作 Quote: void MainWindow::closeEvent(QCloseEvent *event) { if (maybeSave()) { writeSettings(); event->accept(); } else { event->ignore(); } } 2、如何用打开和保存文件对话 答:使用QFileDialog Quote: QString fileName = QFileDialog::getOpenFileName(this); if (!fileName.isEmpty()) { loadFile(fileName); } Quote: QString fileName = QFileDialog::getSaveFileName(this); if (fileName.isEmpty()) { return false; } 3、如果创建Actions(可在菜单和工具栏里使用这些Action) 答: Quote: newAct = new QAction(QIcon(":/images/new.png"), tr("&New"), this); newAct->setShortcut(tr("Ctrl+N")); newAct->setStatusTip(tr("Create a new file")); connect(newAct, SIGNAL(triggered()), this, SLOT(newFile())); openAct = new QAction(QIcon(":/images/open.png"), tr("&Open..."), this); openAct->setShortcut(tr("Ctrl+O")); openAct->setStatusTip(tr("Open an existing file")); connect(openAct, SIGNAL(triggered()), this, SLOT(open())); saveAct = new QAction(QIcon(":/images/save.png"), tr("&Save"), this); saveAct->setShortcut(tr("Ctrl+S")); saveAct->setStatusTip(tr("Save the document to disk")); connect(saveAct, SIGNAL(triggered()), this, SLOT(save())); saveAsAct = new QAction(tr("Save &As..."), this); saveAsAct->setStatusTip(tr("Save the document under a new name")); connect(saveAsAct, SIGNAL(triggered()), this, SLOT(saveAs())); exitAct = new QAction(tr("E&xit"), this); exitAct->setShortcut(tr("Ctrl+Q")); exitAct->setStatusTip(tr("Exit the application")); connect(exitAct, SIGNAL(triggered()), this, SLOT(close())); cutAct = new QAction(QIcon(":/images/cut.png"), tr("Cu&t"), this); cutAct->setShortcut(tr("Ctrl+X")); cutAct->setStatusTip(tr("Cut the current selection's contents to the " "clipboard")); connect(cutAct, SIGNAL(triggered()), textEdit, SLOT(cut())); copyAct = new QAction(QIcon(":/images/copy.png"), tr("&Copy"), this); copyAct->setShortcut(tr("Ctrl+C")); copyAct->setStatusTip(tr("Copy the current selection's contents to the " "clipboard")); connect(copyAct, SIGNAL(triggered()), textEdit, SLOT(copy())); pasteAct = new QAction(QIcon(":/images/paste.png"), tr("&Paste"), this); pasteAct->setShortcut(tr("Ctrl+V")); pasteAct->setStatusTip(tr("Paste the clipboard's contents into the current " "selection")); connect(pasteAct, SIGNAL(triggered()), textEdit, SLOT(paste())); aboutAct = new QAction(tr("&About"), this); aboutAct->setStatusTip(tr("Show the application's About box")); connect(aboutAct, SIGNAL(triggered()), this, SLOT(about())); aboutQtAct = new QAction(tr("About &Qt"), this); aboutQtAct->setStatusTip(tr("Show the Qt library's About box")); connect(aboutQtAct, SIGNAL(triggered()), qApp, SLOT(aboutQt())); 4、如果创建主菜单 答:采用上面的QAction 的帮助,创建主菜单 Quote: fileMenu = menuBar()->addMenu(tr("&File")); fileMenu->addAction(newAct); fileMenu->addAction(openAct); fileMenu->addAction(saveAct); fileMenu->addAction(saveAsAct); fileMenu->addSeparator(); fileMenu->addAction(exitAct); editMenu = menuBar()->addMenu(tr("&Edit")); editMenu->addAction(cutAct); editMenu->addAction(copyAct); editMenu->addAction(pasteAct); menuBar()->addSeparator(); helpMenu = menuBar()->addMenu(tr("&Help")); helpMenu->addAction(aboutAct); helpMenu->addAction(aboutQtAct); 5、如果创建工具栏 答:采用上面的QAction 的帮助,创建工具栏 Quote: fileToolBar = addToolBar(tr("File")); fileToolBar->addAction(newAct); fileToolBar->addAction(openAct); fileToolBar->addAction(saveAct); editToolBar = addToolBar(tr("Edit")); editToolBar->addAction(cutAct); editToolBar->addAction(copyAct); editToolBar->addAction(pasteAct); 6、如何使用配置文件保存配置 答:使用QSettings 类 Quote: QSettings settings("Trolltech", "Application Example"); QPoint pos = settings.value("pos", QPoint(200, 200)).toPoint(); QSize size = settings.value("size", QSize(400, 400)).toSize(); Quote: QSettings settings("Trolltech", "Application Example"); settings.setValue("pos", pos()); settings.setValue("size", size()); 7、如何使用警告、信息等对话框 答:使用QMessageBox 类的静态方法 Quote: int ret = QMessageBox::warning(this, tr("Application"), tr("The document has been modified.\n" "Do you want to save your changes?"), QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape); if (ret == QMessageBox::Yes) return save(); else if (ret == QMessageBox::Cancel) return false; 8、如何使通用对话框中文化 答:对话框的中文化 比 如说,QColorDialog 的与文字相关的部分,主要在qcolordialog.cpp 文件 中,我们可以从qcolordialog.cpp 用 lupdate 生成一个ts 文件,然后用自定 义这个ts 文件的翻译,再用lrelease 生成一个.qm 文件,当然了,主程序就要 改变要支持多国语言了, 使用这个.qm 文件就可以了。 另外,还有一个更快的方法,在源代码解开后有一个目录translations,下面 有一些.ts, .qm 文件,我们拷贝一个: Quote: cp src/translations/qt_untranslated.ts ./qt_zh_CN.ts 然 后,我们就用Linguist 打开这个qt_zh_CN.ts,进行翻译了,翻译完成后, 保存后,再用lrelease 命令生成qt_zh_CN.qm, 这样,我们把它加入到我们的 qt project 中,那些系统的对话框,菜单等等其它的默认是英文的东西就能显 示成中文了。 9、在Windows 下Qt 里为什么没有终端输出? 答:把下面的配置项加入到.pro 文件中 Quote: win32:CONFIG += console 10、Qt 4 for X11 OpenSource 版如何静态链接? 答:编译安装的时候加上-static 选项 Quote: ./configure -static //一定要加static 选项 gmake gmake install 然后,在Makefile 文件中加 static 选项或者在.pro 文件中加上QMAKE_LFLAGS += -static,就可以连接静态库了。 11、想在源代码中直接使用中文,而不使用tr()函数进行转换,怎么办? 答:在main 函数中加入下面三条语句,但并不提倡 Quote: QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); 或者 Quote: QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK")); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK")); QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK")); 使用GBK 还是使用UTF-8,依源文件中汉字使用的内码而定 这样,就可在源文件中直接使用中文,比如: Quote: QMessageBox::information(NULL, "信息", "关于本软件的演示信息", QMessageBox::Ok, QMessageBox::NoButtons); 12、为什么将开发的使用数据库的程序发布到其它机器就连接不上数据库? 答:这是由于程序找不到数据库插件而致,可照如下解决方法: 在main 函数中加入下面语句: Quote: QApplication::addLibraryPath(strPluginsPath"); strPluginsPath 是插件所在目录,比如此目录为/myapplication/plugins 则将需要的sql 驱动,比如qsqlmysql.dll, qsqlodbc.dll 或对应的.so 文件放 到 /myapplication/plugins/sqldrivers/ 目录下面就行了 这是一种解决方法,还有一种通用的解决方法,即在可执行文件目录下写 qt.conf 文件,把系统相关的一些目录配置写到qt.conf 文件里,详细情况情参 考Qt Document Reference 里的qt.conf 部分 13、如何创建QT 使用的DLL(.so)以及如何使用此DLL(.so) 答:创建DLL 时其工程使用lib 模板 Quote: TEMPLATE=lib 而源文件则和使用普通的源文件一样,注意把头文件和源文件分开,因为在其它 程序使用此DLL 时需要此头文件 在使用此DLL 时,则在此工程源文件中引入DLL 头文件,并在.pro 文件中加入 下面配置项: Quote: LIBS += -Lyourdlllibpath -lyourdlllibname Windows 下和Linux 下同样(Windows 下生成的DLL 文件名为yourdlllibname.dll 而在Linux 下生成的为libyourdlllibname.so。注意,关于DLL 程序的写法, 遵从各平台级编译器所定的规则。 14、如何启动一个外部程序 答:1、使用QProcess::startDetached()方法,启动外部程序后立即返回; 2、使用QProcess::execute(),不过使用此方法时程序会最阻塞直到此方法执 行的程序结束后返回
arcgis工具总结 1. 要素的剪切与延伸 实用工具 TASK 任务栏 Extend/Trim feature 剪切所得内容与你画线的方向有关。 2. 自动捕捉跟踪工具 点击Editor工具栏中Snapping来打开Snapping Environment对话框 捕捉设置中有3个选项, vertex edge end 分别是节点、终点、和边,选择end应该会捕捉端点 3. 图斑面积计算及长度计算 应用工具CALCULATE AREA 或者使用VBA代码实现 新建字段并开启Advanced 写入代码,面积计算: Dim Output as double Dim pArea as Iarea Set pArea = [shape] 在最后的一个空格里面写入代码(即:字段名)pArea.area 长度计算: Dim Output as double Dim pCurve as ICurve Set pCurve = [shape] Output = pCurve.Length 4. 剪切图斑 Task任务栏 cut polygon feature工具,需要sketch工具画线辅助完成 5. 配准工具 Spatial Adjustment 工具 需要注意先要 set adjustment data 然后配准 6. 影像校正 Georeferncing工具 7. 要素变形 Task 工具条中的reshape feature 配合sketch工具 8. 添加节点 Modify feature 在需要加点的地方右键单击insert vertex 也可单击右键选择properties 打开edit sketch properties对话框,在坐标点位置右键插入节点 9. 共享多边形生成 Auto-complete polygon 工具生成共享边的多边形,配合snapping environment更好。 10. 画岛图 1).使用任务栏中的sketch工具,当画完外面的一圈时,右键 选择finish part 然后画中间的部分 再右键finish sketch 2).分别画连个图斑然后应用Editor 工具栏中的工具先intersect(图斑重叠的地方创建一个新的图斑)然后Clip(剪切)即可。(补充其他工具:Union,把多个图斑联合起来并形成一个新的连接在一起的图斑,原图斑无变化,联合后的图斑不继承原任何图斑的属性;Merge,把多个图斑合并到其中一个图斑上并继承它的属性,原图斑变化;Split用于间断线段,但得知道具体的长度,如果不知道那么长度或者没必要那么精确就直接用Eeitor工具栏的Split tool工具 ) 11. 连接外界属性数据(如:.xsl文件等) 利用JOIN 工具可以方便的实现与外界属性数据的关联,但这种关联是依赖于外界数据库本身的,需经过重新导出之后即完全保存在相应图层属性页。在做外联如EXCEL等的时候对数据有一些要求,确保第一行包含字段名,这些字段名不能超过十个字母,不能出现特殊字符。最好把EXCEL保存为.csv文件去除一些不兼容的内容再连接。 转载ESRI论坛Lucy1114帖子说明: 12. 导出Shape格式为其他软件识别的打印格式如JEPG等格式 FILE/EXPORT MAP 然后选择相应的图片格式,此时也可设置答应的分辨率 pdi 13. 建立注记层 方法一.carvert to Ananotation ,方法二.Draw工具条 方法三.从其他地方转换注记图层 14. 查看特定区域范围内的某种地物分布情况 Selection / select by location 15. 如何用面生成中线 先把数据转成coverage格式,workstion里有Centerline命令。 另外ArcToolBox->Data Management Tools->Generalization->Collapse Dual Lines To Centerline也行。不过以上做法要求边界是双线。你必须先把面转成线,特别是参数的设置。也可以尝试下sketch工具条中的midpoint tool 后面有详细的讲解过程。 16. 根据坐标数据生成点 方法一. :[工具] >>[添加XY 数据],在“添加XY 数据”窗口中,选择已添加的 XY 数据表,指定X 坐标字段(东经)和Y 坐标字段(北纬),按“编辑”按钮,选择坐标系统。一般GPS系统采用的坐标系统为WGS_1984。 方法二.直接用TOOL工具下的ADD XY 可以单个加点 17. 用任意多边形剪切栅格数据(矢量数据转换为栅格数据) 在ArcCatalog下新建一个要素类(要素类型为:多边形),命名为:ClipPoly.shp 在ArcMap中,加载栅格数据:Landuse、和ClipPoly.shp 打开 编辑器工具栏,开始编辑ClipPoly ,根据要剪切的区域,绘制一个任意形状的多 边形。打开属性表,修改多边形的字段“ID”的值为1,保存修改,停止编辑。 打开 空间分析工具栏 GIS软件应用-ArcGIS 执行命令:--- 指定栅格大小:查询要剪切的栅格图 层Landuse 的栅格大小,这里指定为25 指定输出栅格的名称为路径 执行命令: - 构造表达式:[Landuse]*[polyClip4-polyclip4] ,执行栅格图层:Landuse 和 用以剪切 的栅格polyClip4 之间的相乘运算 GIS软件应用-ArcGIS 得到的结果即是以任意多边形剪切的Landuse数据 18. 栅格重分类(Raster Reclassify) 通过栅格重分类操作可以将连续栅格数据转换为离散栅格数据 19. Eliminate合并破碎多边形 以下的操作将会把面积小于10000 平方米的多边形合并到周围与之有最长公共 边的多边形中: 执行菜单命令[选择]>>[通过属性选择],查询”Area”Masking Tools->Intersecting Layer Masks,为注记创建模版,模版的大小用参数Margin来决定 3).右键点击数据框,在环境菜单中选择高级绘制选项(Advanced Drawing Options),用注记的模版图层去遮盖线图层,确定 23.同一图层使用Clip实现图斑的无缝拼接 当一个图斑的边界确定,需要实现两个图斑的无缝拼接时,可以把图斑拉伸覆盖确定边界的图斑的一部分,然后用下面的图斑剪区上面的图斑。 方法二:图斑之间有小的缝隙,可以先在缝隙上任意补画一个图斑,然后合并(merge)图斑,最后再剪切(Clip)即可得到无缝的图斑。 如下图所示: 24.利用两个相交图斑创建新图斑。 两个图斑都选中然后 Eidtor 工具条intersect,此方法原图斑不会被接切。 25.属性表中选择集与非选择集的切换 Options/switch selection 26.快速把选择的要素另存为一个图层并加载进来。 先选责需要另存图层的要素(直接选择或者属性表),然后在图层上右键Selection/create Layer From Selected Features。 (以前都是直接export竟然没有发现) 27.利用Hyperlinks丰富数据库,为其添加超链接。 单击rowse工具栏中Identify按钮。 单击地图中一个要素,在Identify Results窗口右击需要设置超链接的要素,然后点击Add Hyperlink菜单。若要将一个Web页加为超链接,单击项,并输入URL。要链接到一个文档,单击Link to a Document,并输入文档路径名。 单击Tools工具栏中的Hyperlink工具,并单击图上某一个要素即可实现。 使用一个属性字段作为超链 在内容表中右击包含一个超链接字段的图层,然后点击properties ,单击Display选项卡。选中Supprt Hyper3. Hyperlinks using field选项,单击下拉箭头并点击一个字段。 单击Document or URL。单击OK,单击Tools中的Hyperlink按钮,将鼠标指移到一要素上并单击以显示其超链接。 28.Arcmap中的SQL语言 当查询ArcInfo coverages, shape文件, INFO表以及dBASE表时,SQL表达式中的字段名必须用双引号扩起。如:“AREA”,如果查询的是个人地理数据库数据,则需要将字段名包含在方括号内,如:[AREA],如果查询的是ArcSDE地理数据库数据或是ArcIMS要素类或ArcIMS影象服务子层中的数据,则不需要将字段名括起,如:AREA 有些运算符和关键字也可能有所变化。 在查询表达式中,字符串必须加单引号,例如: [STATE_NAME]=‘California’ 除个人地理数据库要素类和表之外,查询表达式中的字符串是区分字母大小写的。如果搜索不需要区分大小写,可以使用SQL函数将所有的值都转换成大写或者小写。对于基于文件的数据源,例如shape文件或coverages,既可以使用UPPER函数,也可以使用LOWER函数。 例如下面这个查询将选出那些姓名的最后为Jones或JONES的顾客。 UPPER("LAST_NAME") = 'JONES' 可以用LIKE运算符(不是 = 运算符)与通配符一起构建部分字符串查询。 例如,表达式 [STATE_NAME] LIKE 'Miss*'将在美国州名中选择Mississippi和Missouri。 *表示多个字符。 还比如,查询表达式 [OWNER_NAME] LIKE '?atherine smith' 将找出Catherine Smith和Katherine Smith。 ?表示单个字符。通配符的使用依赖于不同的数据库。例子中使用的通配符只适用于个人地理数据库。 可以使用NULL关键字来选择那些在指定字段中值为NULL的要素和记录。通常,NULL关键字的前面总有IS或IS NOT。 29.Select by location小结 按位置查找要素的方法 使用按位置选择(Select By Location) 对话框,可以根据要素间的相对空间位置进行查找。可以使用多种方法,查找在同一图层中或不同图层间相互邻近或叠置的点、线、多边形等要素。 被…跨越边界(Are crossed by the outline of) 利用这种方法,选择被另一图层要素覆盖的某个图层上的要素。例如,搜索道路跨越的荒地,得到的结果是道路跨越其边界的所有荒地。 相交(Intersect) 与Are crossed by the outline of类似,但是该方法可以选择与参照要素接连的要素。例如,选择与道路相交的荒地,选择的结果将包括该道路在其边界范围之内或在其边界之上的所有荒地。 在…距离范围内(Are within a distance of) 这一方法将选择同一图层或不同图层上相邻或邻近的要素。例如,现有一个包括清洁井和污染井的图层,使用该方法可以找出距离污染井500米范围内的所有清洁井。同样,也可以找出距离污染井500米范围内其他图层上的水库和农田。还可以用该选项选择与其他要素相毗邻的要素。例如,假如用户已选定了公司可能购买的地块,现在想获取邻近地块的信息。这种情况下,利用该选项选择选中地块零距离范围内的所有地块即可。 中心在…里(Have their center in) 这种方法选择某一图层上的要素,其中心点落在另一图层要素中。 完全在…内(Are completely within) 这种方法选择完全落在另一图层多边形内部的某一图层上的要素,例如,选择林区里面的湖泊。通过指定一个缓冲距离,可以选择落于多边形内部并距离多边形边界一定范围内的所有要素。例如,选择林区内部500米范围内的湖泊。 完全包含(Completely contain) 这种方法选择某一图层上完全包含另一图层上的要素的多边形。例如,选择内部包含湖泊的林区。通过指定一个缓冲距离,可以选择在其内部一定范围内包含要素的多边形。例如,对湖泊做缓冲区,可以选择距离湖泊500米范围内的林区。 与…有公共线段(Share a line segment with) 这种方法选择那些与其他要素具有公共线段、顶点或节点的要素。 与…等同(Are identical to) 这种方法选择与另一图层中某一要素具有同样几何形状的所有要素。这时,要素类型必须相同。举个例子:必须用多边形选择多边形,用线段选择线段,用点选择点。 包含(Contain) 这种方法选择某一图层中包含另一图层中要素的要素。这种方法与完全包含(Completely contain)方法的区别在于:要素间的边界可以接触。例如,使用包含(Contain)方法,即使湖泊的边界和包含该湖泊的森林的边界接触,森林也会被选中。但是在用完全包含(Completely contain)方法时,森林是不会选中的。 包含于(Are Contained by) 这种方法选择某一图层中被另一图层中要素包含的要素。例如,选择被乡村包围的城市。这种方法和完全包含于(Are completely within)方法的区别在于,要素的边界可以接触。 与…接触(Touch the boundary of) 如果使用包含线的图层来选择要素,则该方法将选择那些与此图层里的线有公共线段,顶点或端点(节点)的线和多边形要素。如果跨越了线,则这些线和多边形将不会被选中。 如果使用包含多边形的图层来选择要素,则该方法将选择那些与此图层里的多边形边界有公共线段或顶点的线和多边形要素。如果跨越了多边形边界,则这些线和多边形将不会被选中。 31. 将选中的要素放大至整个窗口 在内容表中右击包含选中要素的图层,单击Selection菜单,并单击Zoom To Selected Features子菜单。 选中要素将放大至整个ArcMap窗口。 32.显示选中要素的属性 在内容表中右击选中要素所在图层,单击Open Attribute Table,单击Show Selected records。 窗口中显示出选中要素的属性记录。也可以打开属性表在select和all之间切换。 33. 通过单击要素添加文本 1). 在内容表中,右击需要添加标注的图层,单击Properties。 2). 单击Labels选项卡。 3). 单击Label Field下拉箭头,单击作为标注的字段。 4). 单击OK。 5). 单击Draw工具条上的Label按钮。 应该是只需单击下拉箭头选择Label按钮。 6). 单击Place label at position clicked。 如果选择了Automatically find best placement,ArcMap会自动的为标注寻找合适的位置。 7). 单击Choose a style,然后单击需要的标注样式。 8). 在需要标注的要素上单击鼠标,标注就添加上去了。 (先在Draw工具条下新建标注组方便管理,New Annotation Group) 34. 标注工具条和标注管理器 如果图层中有一些要素需要指定特殊的标注属性,需要在标注管理器中生成其它的标注类。 点击左侧面板上的一个图层,在右侧面板上为其添加一个新的标注类。 个人认为此方法虽然没有转为注记后的标注灵活,但却可以方便的实现自动相对智能化的标注,相比之下更省心,提高效率。 35. 在进行地图查询或编辑的时候为什么会总是选中所有的图层 诀窍在这里(虽然是一点点小问题,但当我第一次遇到这个问题时却花费了我不少时间,甚至于怀疑自己的数据有问题) 36.建立拓扑关系检查图斑 先根据需要在Catalog中建立相应的拓扑关系规则,然后在Arcmap中进行拓扑处理,辅助工具条Topolygon,下图所示为重叠图斑检查。(也可以在Arctoolbox下的Data Management tools/topology来做) 有关geodatabase的topology规则 多边形topology 1).must not overlay:单要素类,多边形要素相互不能重叠 2).must not have gaps:单要素类,连续连接的多边形区域中间不能有空白区(非数据区) 3).contains point:多边形+点,多边形要素类的每个要素的边界以内必须包含点层中至少一个点 4).boundary must be covered by:多边形+线,多边形层的边界与线层重叠(线层可以有非重叠的更多要素) 5).must be covered by feature class of:多边形+多边形,第一个多边形层必须被第二个完全覆盖(省与全国的关系) 6).must be covered by:多边形+多边形,第一个多边形层必须把第二个完全覆盖(全国与省的关系) 7).must not overlay with:多边形+多边形,两个多边形层的多边形不能存在一对相互覆盖的要素 8).must cover each other:多边形+多边形,两个多边形的要素必须完全重叠 9).area boundary must be covered by boundary of:多边形+多边形,第一个多边形的各要素必须为第二个的一个或几个多边形完全覆盖 10).must be properly inside polygons:点+多边形,点层的要素必须全部在多边形内 11).must be covered by boundary of:点+多边形,点必须在多边形的边界上 线topology 1).must not have dangle:线,不能有悬挂节点 2).must not have pseudo-node:线,不能有伪节点 3).must not overlay:线,不能有线重合(不同要素间) 4).must not self overlay:线,一个要素不能自覆盖 5).must not intersect:线,不能有线交叉(不同要素间) 6).must not self intersect:线,不能有线自交叉 7).must not intersect or touch interrior:线,不能有相交和重叠 8).must be single part:线,一个线要素只能由一个path组成 9).must not covered with:线+线,两层线不能重叠 10).must be covered by feature class of:线+线,两层线完全重叠 11).endpoint must be covered by:线+点,线层中的终点必须和点层的部分(或全部)点重合 12).must be covered by boundary of:线+多边形,线被多边形边界重叠 13).must be covered by endpoint of:点+线,点被线终点完全重合 14).point must be covered by line:点+线,点都在线上 Topology工具条及功能介绍: 37.给多个要素同一赋值 选中你需要同一赋值的是所有图斑,然后点击Atrributes,此时出现属性修改对话框,点击根目录是对所有要素同一赋值,点击下面的支目录则可以分别赋值。(也可以用字段计算器实现) 38.如何根据确定的点画出以他相应的点 例如:我在地图上已经指导了一个一直点,而其他的点在地图上都是以他为中心画出来的。学校  SE60度,140米  意思是学校在中心点南偏东60度,距离是140米,这样的点在arcmap中怎么加呢?我的方法有二分别如下。 1). 确定已有一个点图层,其中有学校,然后: 对该图层开始编辑 选择工具栏editor---direction-distance tool 以中心点为中心,先画角度线(arcmap左下角会有角度提示),再画距离/半径(注:画的过程中点击A键可以输入角度值,点击D键可以输入距离值) 确定,即可 如果找不到direction-distance tool 的同志请看下面 Direction-distance tool is here 第二种方法就是直接编写代码实现 下面是一段示例的VBA代码(本段代码作者:GIS空间站 knight_sl) Option Explicit Dim dPoint(2, 1) As Double Sub aaa() Call bbb Dim aa As IMxDocument Set aa = ThisDocument Dim pFLyr As IFeatureLayer Set pFLyr = aa.FocusMap.Layer(0) Dim pFCsr As IFeatureCursor Dim pFt As IFeature Set pFCsr = pFLyr.FeatureClass.Update(Nothing, False) Set pFt = pFCsr.NextFeature Dim pPoint As IPoint Set pPoint = pFt.ShapeCopy Dim pNewPoint As IPoint Dim X0 As Double, Y0 As Double Dim X As Double, Y As Double Dim dAngle As Double Dim i As Long For i = 0 To UBound(dPoint, 1) Set pFt = pFLyr.FeatureClass.CreateFeature Set pNewPoint = New Point dAngle = dPoint(i, 0) * 3.14159263579893 / 180 pNewPoint.X = dPoint(i, 1) * Cos(dAngle) + pPoint.X pNewPoint.Y = dPoint(i, 1) * Sin(dAngle) + pPoint.Y Set pFt.Shape = pNewPoint pFt.Store Next Set pFLyr = Nothing Set pFCsr = Nothing Set pFt = Nothing Set pPoint = Nothing Set pNewPoint = Nothing End Sub Sub bbb() '定义新加三个点的角度和距离 dPoint(0, 0) = 10 dPoint(0, 1) = 150 dPoint(1, 0) = 30 dPoint(1, 1) = 170 dPoint(2, 0) = 120 dPoint(2, 1) = 200 End Sub 这中方法做起来需要一点编程经验,但是比上面那中一个一个的画的方法要先进多了,可以把所有的点录入同时画出来。 如果你不会VBA编程,请看下面: 这是ArcGIS VBA的程序,运行的方法: 1),运行ArcMap,加载所需图层; 2),Tools菜单/Macros(宏)/Visual Basic Editor(VB编辑器),这样打开VB编辑器 3),双击打开VB编辑器左上工程资源管理器中的Project/ArcMap对象/ThisDocument,把上面的代码粘进去。注意看首行 Option Explicit如果有两行,就删除一行。 4),点击VB编辑器工具栏的运行按钮运行(或菜单 运行/运行子过程),就可以了,再激活ArcMap可以看到发生了什么! 或者还有一种创建宏的方法(不过建议对ArcGIS VBA不大熟的同志不要用这种方法): 1),运行ArcMap,加载所需图层; 2),Tools菜单/Macros(宏)/Macros,这样打开宏编辑器 3),在宏名称中输入aaa,确定后,会打开VB编辑器,将看到有一个aaa的过程,没有实体。你把上面的aaa过程中的代码粘进去,然后在前面加上 Option Explicit(这个别重复了哈) Dim dPoint(2, 1) As Double 就可以。 4),点击VB编辑器工具栏的运行按钮运行(或菜单 运行/运行子过程),就可以了,再激活ArcMap可以看到发生了什么! 39.这里说道了工具的使用,那么就简单的再介绍下Sketch中的几个工具吧 Sketch construction tools的使用: Sketch tool:主要是用来创造线和面特征的节点,在你完成了草图之后,ArcMAP就会增加最后的线段,形成矢量图。 Arc tool:这个主要是帮你创造一个弧段的,选中这个工具后,先在弧段起点点一下,然后在弧段高度方向大致位置点一下(这个点是不可见的,只是给你确定弧段的高度),最后在弧段的终点点一下,就形成一条弧段了。 Direction-distance tool:这个主要是从已知某一个方向和某一个距离来确定一个点。首先点一个已知方向的点,这是会有一条线出来,你确定好方向后,再点已知距离的点,这是出来一个圆,确定距离后,直线和圆有交点,这就是你要的点,再上面点一下就ok! Distance-distance tool:这个和上面的一样的道理,只是它都用距离来确定一个点,也就是两个圆确定你要的点。 Endpoint arc tool:这也是创造弧段用的,与Arc tool 工具不同的是,它是先在弧段的起点点一下,然后在弧段的终点点一下,再点一个点确定弧段的半径。个人认为这个工具要比Arc tool工具更精确些。 Intersection tool:就是利用两条直线确定一个点。很简单一用就会! Midpoint tool:确定中点的工具,比如马路的中点,你可以先点一边,再点马路另一边,这时马路的中点自动出现了。 (画道路中线太可以试试,不过得是直线道路咯,^_^) Tangent tool:相切弧段工具,它能够在一条线段上画出一条切线,只有你用其他工具画了线段出来时你才可以用这个工具。 Trace tool: 主要是用来在跟踪已存在的特征,比如一栋房子,你要沿房子外围画一条线(比如围墙),那么你使用这个工具就非常方便,首先开始时你必须按O键,设置下跟踪的间距,如100,其中还有三个角点的方式:mitered是直角 bevelled 是钝角rounded是圆角。(感觉那效果有点像CAD的偏移咯) 40.如何标注多个字段的属性及分子式标注 Propertis/label field /expression 实例:""& [单位名称] &"" & VbCrLf & " " & [PARCEL_NO] 输出分数线 VbCrLf 换行 效果图: 引用GIS空间站 兔八哥文章详解 以前用ArcGIS Label一般也就在图层的Properties里面定义一下Label字体大小和粗细。这两天遇到一个问题,需要在Label中显示多个字段的内容,比如BlockName和CompanyName。其实这个本来不是很难的问题,因为Label中支持VBScript,使用[BlockName] & VbNewLine & [CompanyName]。就可以实现标注中第一行显示BlockName,第二行显示CompanyName. 现在问题出来了,出图时候希望突出BlockName效果,希望加粗显示,而CompanyName使用一般字体。考虑了很长时间终于从ArcGIS帮助中找到了相关的内容,原来Label的VBScript里面支持类似于Html的VBScript标签,比如加粗就是用,上面问题就可以使用下面语句解决: "" & [BlockName] & "" & VbNewLine & [CompanyName] 除了加粗,ArcGIS中还支持下面的文本格式标签: Font: "" & [LABELFIELD] & "" Color: "" & [LABELFIELD] & "" "" & [LABELFIELD] & "" Bold: "" & [LABELFIELD] & "" Italic: "" & [LABELFIELD] & "" Underline: "" & [LABELFIELD] & "" All caps: "" & [LABELFIELD] & "" Small caps: "" & [LABELFIELD] & "" Superscript "" & [LABELFIELD] & "" Subscript: "" & [LABELFIELD] & "" Character spacing (%): "" & [LABELFIELD] & "" Word spacing (%): "" & [LABELFIELD] & "" Leading (pts): "" & [LABELFIELD] & " nFZLength Then For i=0 To (nFMLength-nFZLength)/2 strLeftSpace =strLeftSpace +chr(32) strRightSpace =strRightSpace + chr(32) Next End If FindLabel = "" &strLeftSpace; & [OBJECTID]&strRightSpace;& ""&chr;(13)&chr;(10)& [SHAPE_Area] End Function 41.用点构面 ArcToolBox->Samples->Data Management->Features->Create Features From Text File 点组成面,最重要的是点序的排列,因此对数据的组织有一定的要求。 42.几个常用的VBA代码 在ARCGIS属性表中增加需要的字段,并自动赋值 使用方法 1打开属性表,选择计算的字段,右点选择Calculate Values;2.选择“是”,进入Field Calculator; 2选择Advance选项; 3 在Pre-Logic VBA Script Code编辑框中输入VBA代码; 4在下面编辑框中输入赋值部分. 1--点坐标X VBA部分: Dim pGeo As IGeometry Set pGeo = [Shape] Dim pPoint As IPoint Set pPoint = pGeo 赋值部分: pPoint.X 2--点坐标Y VBA部分: 同上 赋值部分: pPoint.Y 坐标值为文件存储的固有值,和是否使用On the Fly坐标表示无关。返回当前显示的坐标值参看8,9 3--多边形周长 VBA部分: Dim pGeo As IGeometry Set pGeo = [Shape] Dim pPolygon As IPolygon Set pPolygon = pGeo 赋值部分: pPolygon.Length 4--多边形面积 VBA部分: Dim pGeo As IGeometry Set pGeo = [Shape] Dim pPolygon As IPolygon Set pPolygon = pGeo Dim pArea As IArea Set pArea = pPolygon 赋值部分: pArea.Area 5--多边形重心X VBA部分: Dim pGeo As IGeometry Set pGeo = [Shape] Dim pPolygon As IPolygon Set pPolygon = pGeo Dim pArea As IArea Set pArea = pPolygon Dim pPoint As IPoint Set pPoint = pArea.Centroid 赋值部分: pPoint.X 6--多边形重心Y VBA部分: 同上 赋值部分: pPoint.Y 7--Polyline长度 VBA部分: Dim pGeo As IGeometry Set pGeo = [Shape] Dim pPolyline As IPolyline Set pPolyline = pGeo Dim pCurve As IPolycurve Set pCurve = pPolyline 赋值部分: pCurve.Length 8--表示点坐标X VBA部分: Dim pDoc As IMxDocument Set pDoc = ThisDocument Dim pSpRef As ISpatialReference Set pSpRef = pDoc.FocusMap.SpatialReference Dim pClone As IClone Set pClone = [Shape] Dim pGeo As IGeometry Set pGeo = pClone.Clone Dim pPoint as IPoint Set pPoint = pGeo pGeo.Project pSpRef 赋值部分: pPoint.X 9--表示点坐标Y VBA部分: 同上 赋值部分: pPoint.Y 坐标值为On the Fly显示的坐标,不是文件存储的固有坐标 10--连续编号 VBA部分: Static lCount as long lCount=lCount+1 赋值部分: lCount (从1开始) lCount-1 (从0开始) 计算面的中点 Dim Output As Double Dim pArea As IArea Set pArea = [Shape] Output = pArea.Centroid.X(或y) 当然这是很老的方法了,现在arcgis9.2以后都不需要用VBA啦,右键属性表字段然后直接选择 Caculate Geometry就可以实现比如面积计算,X,Y坐标等的属性赋值了咯。 43. 在同一图层如何对同一要素的不同部分以不同的符号表示 (注:要实现这种渲染需要两段具有不同的属性) 44.自己做arcMAP的图例 在Symbol property Editor中进行制作了 1)、先在Style Manager中的左侧列表中,选择相应的Style文件,ArcGIS默认的符号库文件是ESRI.Style文件,当然也给出了C:\Documents and Settings\........................................目录下用于用户自定义的Style文件 2)、展开Style文件,选择要创建Symbol的类型,如:Fill Symbol(面填充)、Line Symbol(线)、Marker Symbol(点) 然后在右侧的列表中鼠标右键->New 3)、在弹出的Symbol Property Editor窗体中,进一步选择Marker Symbol的类型,如:Simple Marker Symbol、Picture Marker Symbol等等 4)、这个时候就要根据需要开始设计符号的各种属性了,由于不同种类的Marker Symbol有不同的属性,因此,属性也会不尽相同。 5)、另外介绍一个经常需要或比较使用的步骤,我们需要设计的符号可以由ESRI提供的现有符号组合而成,那么我们则需要添加2个Symbol Layer,然后进行2个Symbol Layer的叠加 6)、分别设置上述2个Symbol Layer的中的Symbol的属性,之后确认保存,这样会在Style Manager中看到我们新制作的符号 如图: (注:以上内容转载自ESRI社区 gis27) 45.计算属性中相同的字段个数 选择要计算的字段然后右键选择Summarize根据相应的要求设置参数即可实现。功能示意如下图: 46.自动提取面的中点并加点 Arctoolbox->Feature-> Feature to Point 47.合并属性相同的相邻图斑 使用Dissolve 当选择了create multipart feature时,所有具有相同属性的图斑将链接在一起做为一个图斑。 48.提取图斑转折点坐标 如果没有伪节点那么,选中一个线或者面,打开sketch Properties,就可以看到节点坐标。 还有一种方法就是:通过toolbox-datamanagement-feature-FeatureVerticesToPoints得到转折点的图层然后Add XY Coordinates,该点图层的属性表中就包含了X,Y字段,将其导出,就得到转折点坐标了。 ArcMap中设置.mxd相对路径 复制拷贝地图文档后再次打开会遇到图层前一个!的标识符号,是因为加载图层的相对路径变化了,需要重新指定图层位置。对此将.mxd文档设置为相对路径起到作用,具体做法如下: (1)File-->Document Properties-->打开对话框中,点击Data Source Options...按钮; (2)选中store relative path names to data sources单选框,并勾选Make relative paths the defalut of...前的复选框。 以上两步操作即可。 在dissolve时,出现 ERROR 000354: The name contains invalid characters Failed to execute (Dissolve). End Time: Thu Mar 24 09:32:47 2011 (Elapsed Time: 0.00 seconds) output文件包括无效字符如中划线等 Geometry First [Editor's note: I was having trouble last week dissolving a shapefile based on a common attribute. I kept getting the following error: "Invalid Topology [INCOMPLETE_VOID_POLY]“. Not entirely helpful! A little Google searching turned up the following tip from ESRI.] Republished from ESRI. Problem: Some Overlay Tools, such as Intersect, return unexpected results or fail Description Results do not look correct or operations fail with strange errors such as: “Invalid Topology [INCOMPLETE_VOID_POLY]“. If this type of error has occurred, it is most likely to occur when using one of the following: Clip, Erase, Identity, Intersect, Symmetrical Difference, Union, Update, Split Featureclass to Coverage, Dissolve, Feature to Line, Feature To Polygon, Integrate, or ValidateTopology. Cause It is possible that tool outputs may be strange or incorrect because one or more features in the input feature class have geometry problems. Some examples of geometry problems are: • short segments • null geometry • incorrect ring ordering • incorrect segment orientation • unclosed rings • self-intersections or empty parts Solution or Workaround If such errors occur or the output looks incorrect, the first step in assessing the situation is to run the ArcToolbox tool Data Management Tools > Features > Check Geometry. -show me This tool provides a list of the invalid features in the feature class and a short description of the problem. Features with problems can be fixed in one of two ways: Editing the feature class with the geometry problem, and fixing each individual problem identified. Some of these problems, like non-simple geometry, can be fixed by double-clicking the feature in the editor and saving the edits. Running the ArcToolBox tool Data Management Tools > Features > Repair Geometry on the feature class containing the problem features 昨天检查一区属性发现一区图层的面积属性shape_area竟然出现了负值,想必是数据转换的时候出现了问题。今天在论坛求证了一下,感谢各位的解答。 ArcGIS默认顺时针图形为正,手工画polygon的时候不管怎么画结果都是顺时针的。所以一般负值的出现是转换过程出现问题,polygon是由ring组成的,ring则是有更小的segement(line,circularArc,ellipticalArc,beziercurve)构成,所具有方向性。 解决方法是用ArcTool中的check geometry和 repair geometry工具,上述的检查结果是Incorrect ring ordering。repair后会自动修复错误,已解决。 此外,repair工具只能修复以下五种错误: Null geometry—The feature will be deleted from the feature class. Short segment—The geometry's short segment will be deleted. Incorrect ring ordering—The geometry will be updated to have correct ring ordering. Incorrect segment orientation—The geometry will be updated to have correct segment orientation. Self intersections—The geometry's segments that intersect will be split at their intersection. Unclosed rings—The unclosed rings will be closed. Empty parts—The parts that are null or empty will be deleted. 更多的错误修复参照帮助中的 How to salvage a corrupt shapefile
人力资源管理软件功能介绍 本人力资源软件包含人事档案管理 本人力资源软件包含工资管理 本人力资源软件包含考勤管理 本人力资源软件包含绩效管理 本人力资源软件包含用户管理 本人力资源软件软件界面美观,使用方便 人力资源管理软件特色介绍 本人力资源软件包含支持单机、网络,可以通过互联网安全接入企业内网,无需域名或固定IP 用户资料可定制扩展,界面可定义,适应性强 大量的统计分析报表,便于掌握业务情况 本人力资源软件包含提供了自定义报表功能 内置解析器引擎,支持复杂灵活的薪酬制度 本人力资源软件包含支持web查询 小秘书提供了常用的办公功能 本人力资源软件包含含有大量的实用工具,如休假管理、宿舍管理、物品领用管理等等,为工作带来方便 导航界面可以切换定制,便于设置自己常用的功能 软件界面美观,使用方便 本人力资源软件包含可以输出到excel、wps表格、html等文件 本人力资源软件包含提供虚拟域名互联网浏览器访问 支持中控、依时利、舒特、文本接口等多种考勤机 绿色软件,安全方便 单机永远免费,升级免费 人力资源管理软件人事档案功能介绍 人事档案管理 支持分公司管理(人力资源软件) 员工综合报告,员工相关的各类信息(基本记录、奖惩记录、物品领用、调岗记录、福利等)一目了然。 工号修改(人力资源软件) 办公物品管理 员工福利管理(人力资源软件) 卡片打印,可自己设计定制 调岗调职历史(人力资源软件) 日期提醒,可对生日、合同期、证件期限等自动提醒 保险管理(人力资源软件) 培训历史管理 员工证件管理(人力资源软件) 员工奖励管理(人力资源软件) 员工惩罚管理(人力资源软件) 支持显示定制 生成各类统计报表,可定制方案(人力资源软件) 查询非常方便,可以自定义方案 提供了演示数据库(人力资源软件) 支持数据导入,启用非常方便(见dll目录下导入模板) 支持自定义信息扩展 人力资源管理软件工资功能介绍 (人力资源软件)工资数据管理,编辑、审核、反审核、作废 工资单打印,可自己设计定制 方便的工资录入界面,可指定部门显示、指定科目显示,自动计算 (人力资源软件)支持计算定义,可设计灵活的薪酬方案 多工资方案定义 支持工序定义、计件工资(人力资源软件) 支持和考勤数据接口 支持数据复制,可指定条件复制部分数据,可从多个历史单据中复制 支持辅助数据管理(人力资源软件)(单机免费) 提供个税工具,应发金额、所得税、应发任输一个数据自动计算另外2个 灵活生成各类统计报表,可定制方案 查询非常方便,支持组合条件查询 支持员工数据导入,支持初始工资数据导入,启用非常方便(见dll目录下导入模板) 提供了演示数据库 人力资源管理软件考勤功能介绍 自动生成调休标准(人力资源软件) 员工排班,可按部门、班组、个人排班 数据采集,支持定时、循环自动采集,也支持脱机文件读取 支持手工电脑考勤(人力资源软件) 自动生成加班记录和缺勤记录 支持计算相关的工资数据(人力资源软件) 数据处理,可重复处理,修正排班失误 考勤台帐,支持二次手工修正 异常关注,可将出勤异常的员工信息生成异常关注记录 考勤报表,生成各类统计报表,可定制方案 考勤班次,支持多班次定义 考勤班组 考勤机定义,支持多种多台考勤机,可动态扩展 出差记录管理(人力资源软件) 请假记录管理(人力资源软件) 调休记录管理(人力资源软件) 加班记录管理(人力资源软件) 支持和工资单接口(人力资源软件) 支持自定义文本接口 提供了演示数据库 人力资源管理软件绩效功能介绍 考核数据管理,编辑、审核、反审核、作废(人力资源软件) 方便的数据录入界面,可指定部门显示、指定科目显示,自动计算 支持计算定义,可设计灵活的考核方案 多考核方案定义(人力资源软件) 支持考核批次管理 支持多考核人考核,可指定不同权重,自动计算结果 灵活生成统计报表,可按批次统计,也可多批次统计,支持定制显示方案 查询非常方便,支持组合条件查询 支持历史数据比对(人力资源软件) 支持数据导入,启用非常方便 提供了演示数据库(人力资源软件) 人力资源管理软件使用说明 运行oclient.exe,初始化密码为空的 默认为演示库供学习练习,正式使用时使用右边的选择数据库切换到正式库 采用模板文件进行一次性导入或者按下面分别建立相关信息 建立部门信息,支持导入 建立岗位信息,支持导入 调整数据字典,支持导入 资料导入,日常工作 人力资源管理软件修改记录 2008-01-18 人力资源管理软件发布1.0版本 2008-01-19 人力资源管理软件做了以下改进 改进员工编辑界面的日期(感谢中秋月)(人力资源软件) 解决部门定义中的一个BUG(感谢蓝血人) 人力资源管理软件增加退出系统时提示(感谢中秋月) 2008-01-22 人力资源管理软件做了以下改进 人力资源管理软件改进了员工调岗的编辑界面(感谢缺月疏桐) 增加了计件工资的功能,包括工序定义、计件录入和查询(感谢demigood意见)(人力资源软件) 2008-01-24 人力资源管理软件做了以下改进 改进了统计报表小数后有时候出现误差的问题(感谢54HAPPY毛毛)(人力资源软件) 人力资源管理软件计件工资录入增加了根据单价重新计算的功能 人力资源管理软件员工资料录入进行了优化(感谢缺月疏桐,方方) 2008-01-28 人力资源管理软件做了以下改进 人力资源管理软件提供了工号修改功能(在员工管理窗口的功能菜单下)(感谢中秋月,方方) 员工资料增加了离职原因信息 人力资源管理软件增加了离职分析报表 打印模板设计进行了优化,支持分类管理(人力资源软件) 人力资源管理软件登录界面进行了优化,保存上次登陆工号(感谢灵戈Lyngle) 2008-02-17 人力资源管理软件发布1.1版本,做了以下改进 员工管理界面信息定制的优化(感谢笑看人生) 人力资源管理软件调岗离职增加调岗记录时,把员工资料同步掉(感谢缺月疏桐) 增加了岗位级别的报表(感谢天隼)(人力资源软件) 优化了培训记录管理(感谢水天仙YOYO) 人力资源管理软件解决登陆界面服务器名无法显示全的问题(感谢山中人) 优化了人力资源管理软件保存到excel数值类型的问题(感谢54HAPPY) 增加了合同管理功能(人力资源软件) 解决人力资源管理软件工资帐套选择的公式显示不全的问题(感谢vivi) 工资录入支持导入保险数据(人力资源软件) 人力资源管理软件其他的一些优化改进(感谢中秋月、提出意见的朋友们) 2008-02-20 人力资源管理软件做了以下改进 考勤管理增加了查看某一天哪些人休息的功能(感谢人生淡泊) 人力资源管理软件解决了考勤台帐的显示问题(感谢天隼) 考勤班次处理做了优化,增加了打卡的分析类型(参考型)(感谢天隼) 保险支付中提供了excel导出(感谢提出意见的朋友)(人力资源软件) 2008-02-22 人力资源管理软件做了以下改进 人力资源管理软件解决资料编辑合同类别选择的显示问题(感谢天隼) 2008-02-25 人力资源管理软件做了以下改进 优化了通用资料列表方式导入模块,支持更新模式(感谢Snailmail)(人力资源软件) 2008-02-28 人力资源管理软件做了以下改进 岗位管理处能否按公司排列显示(感谢蓝血人) 员工资料管理界面的公司和部门显示做了优化 人力资源管理软件奖励管理界面的公司和部门显示做了优化 培训管理界面的公司和部门显示做了优化 处罚管理界面的公司和部门显示做了优化(人力资源软件) 报表目录分组显示进行了优化(人力资源软件) 解决了保险支付多次选择显示的漏洞(感谢天隼) 2008-03-02 人力资源管理软件做了以下改进 工资录入的部门索引做了优化,工资单打印增加了企业汇总和部门汇总(感谢中秋月) 岗位异动的员工选择做了优化(感谢中秋月)(人力资源软件) 解决了员工管理自定义条件查询数据的显示问题(感谢中秋月) 福利管理的员工选择做了优化(感谢天隼)(人力资源软件) 2008-03-04 人力资源管理软件做了以下改进 人力资源管理软件增加了新的个税税率配置数据,如果工资单月份为200803后,则自动按照新的税率计算。(感谢54HAPPY) 2008-03-09 人力资源管理软件发布1.2版本,做了以下改进(感谢笑看人生、中秋月、天隼、蓝血人等各位朋友) 人力资源管理软件支持工号的自动生成 人力资源管理软件支持相关配置信息编号的自动生成 各模块支持直接输入员工姓名检索 工资定制和录入做了优化,更为方便(人力资源软件) 各模块选择员工提供弹出式选择 对人力资源管理软件多分公司操作的方便性做了很多优化 人力资源管理软件单据打印模板定制做了优化,具备更强的灵活性 考勤台帐管理支持按计算结果和处理结果分别检索 2008-03-16 人力资源管理软件发布1.3版本,做了以下改进 增加按公司分类统计的工资报表(感谢蓝血人) 单据界面上增加了打印按钮(感谢中秋月) 人力资源管理软件增加了员工技能管理(感谢Snailmail) 员工分类报表增加了工龄的条件(感谢长征)(人力资源软件) 人力资源管理软件增加了人才卡片及跟踪管理 人力资源管理软件对单据设计模块进行了优化 针对98环境做了优化(感谢中秋月) 2008-03-25 人力资源管理软件发布1.4版本,做了以下改进 人力资源管理软件员工资料增加了辅助分组(感谢中秋月,天隼) 保险基数支持了导入(感谢Lucky Cat)(人力资源软件) 计件工资支持了产品和工单(感谢demigood、baidu )(人力资源软件) 支持不同的操作员限制不同的公司 人力资源管理软件权限控制细化(感谢中秋月) 处理了保险标准报表的漏洞(感谢杰杰) 员工分组管理做了优化(人力资源软件) 增加了人力资源管理软件考勤基本参数定义模块(感谢天隼) 人力资源管理软件计件工资支持导入 工资帐套定义和工资单支持制定打印模板(感谢中秋月) 绩效考核的指标扩展了一些内容,如信息来源,适用范畴,获取方式,目标单位,计算公式等。(感谢annemy,hrjxhu) 增加了一个数据分析模块(人力资源软件) 人力资源管理软件其他的一些优化(部门结构自动设置顺序码、部门在岗位管理里的刷新、民族排序等)(感谢梦想成真和其他朋友) 2008-03-26 人力资源管理软件做了以下改进 解决了多公司情况下部门显示不正常的漏洞。(感谢养山芋) 人力资源管理软件员工提醒界面增加了入职日期、岗位、上岗日期、岗位级别。(感谢冰雪) 解决了合同类型定义里文件选择不显示的问题。 解决了人力资源管理软件合同管理新增编辑时合同类型不符合的问题。 人力资源管理软件解决了合同类型定义里面的自定义扩展属性删不掉的问题。(感谢☆缘☆) 2008-04-09 人力资源管理软件发布1.5版本,做了以下改进 员工资料支持拼音查询(感谢☆缘☆) 员工资料输入身份证后自动填写籍贯、出生日期和性别(感谢☆缘☆) 员工资料支持描述信息(如工作经历等),可自定义(配置数据字典员工描述信息)(感谢那年冬天,中秋月) 人力资源管理软件支持照片的打印(照片对象标识 emp_pict,类型为图片)(感谢Lucky Cat) 员工编辑和管理体现工龄和年龄(打印标识对应age、work_age、work_age_c)(感谢hui~星辉~) 一个岗位允许对应多个部门(便于多分公司管理)(感谢忆江南、冰雪、欢浪家园) 人事合同管理显示增加显示合同起止日期(感谢我就是我) 人力资源管理软件通用、专用导入模块做了较大优化 考勤提供批量删除打卡记录、考勤台帐功能模块(感谢天隼、沈振刚) 考勤支持自动生成缺勤记录(感谢天隼) 补卡编辑支持填写补卡原因(感谢greensea) 考勤支持自动生成加班记录记录(感谢天隼)(人力资源软件) 考勤支持自动修正请假时间(感谢天隼)(人力资源软件) 考勤支持按月统计并保存(感谢天隼、沈振刚)(人力资源软件) 考勤支持按照考勤数据计算相关工资数据(感谢天隼、沈振刚) 工资编辑支持从考勤月统计数据导入相关数据(感谢天隼、沈振刚) 人力资源管理软件增加考勤工资计算公式定义,不同员工可对应不同公式 绩效考核计划和考核做了很大优化(感谢annemy)(人力资源软件) 修正环境变量处理的一个漏洞(感谢大唐) 修正保险支付再次选择,记录多后异常的漏洞(感谢杰杰)(人力资源软件) 简化网络模式的配置(感谢很多朋友) 其他的一些优化(感谢杰锋、养山芋、忆江南、柳照小楼东,还有许多提出意见的朋友) 2008-04-09 人力资源管理软件修正了一些问题 人力资源管理软件解决了有些拼音码检索不到的问题(感谢☆缘☆,腿腿*^ō^*乖) 员工定制界面重叠问题(感谢我就是我)(人力资源软件) 考勤天和小时转换(感谢iplan) 人力资源管理软件考勤计算匹配请假、出差的漏洞(感谢iplan) 自动执行选项限制为本人(感谢iplan) 籍贯如果有县则不显示市的信息(感谢☆缘☆) 2008-04-10 人力资源管理软件修正了一些问题 修正了考勤班组无法删除的漏洞(感谢hcs5580 ) 人力资源管理软件台帐统计部分进行了优化,缺勤合计改为天数(感谢iplan) 2008-04-11 人力资源管理软件修正了一些问题 修正了员工资料岗位显示不正常的漏洞(感谢bravelc )(人力资源软件) 保险标准支持时间段的查询(感谢☆缘☆) 人力资源管理软件调岗调职增加了公司信息(感谢欢浪家园) 2008-04-13 人力资源管理软件修正了一些问题 籍贯长度扩展了(感谢我就是我) 根据身份证查找籍贯做了优化(感谢☆缘☆) 考勤自动采集文本文件做了优化(感谢杰锋) 2008-04-23 人力资源管理软件发布1.6版本,做了以下改进 计件工资单价扩展,支持到小数点后4位,精度达到0.0001元(感谢baidu) 解决单据扩展属性无法删除的漏洞(感谢僵本) 计件工资支持批量导入 合同管理模块增加从员工资料导入合同信息的功能(右树菜单)(感谢Lucky Cat,我就是我) 员工福利体现分公司信息(感谢欢浪家园) 物品管理体现分公司信息(感谢我就是我) 人事合同增加时,同步员工档案(感谢Lucky Cat) 人力资源管理软件员工关注体现分公司信息(感谢我就是我) 奖励记录体现分公司信息 惩罚记录体现分公司信息 奖励记录支持批量导入(感谢洛才) 培训记录体现分公司信息 人事合同体现分公司信息 惩罚记录支持批量导入(感谢洛才) 培训记录支持批量导入(感谢丁桃) 工资单打印支持是否需要部门汇总数据选项(感谢zhlaoli) 工资报表增加分公司检索选项(感谢) 计件工资提供批量清除历史记录功能(感谢baidu) 人力资源管理软件员工关注体现分公司信息(感谢我就是我) 员工排班体现分公司信息 排班列表体现分公司信息 增加出差记录、请假记录、调休记录、加班记录、缺勤管理报表;(感谢天顺) 人力资源管理软件手工打卡界面增加一个日期时间显示;(感谢明月) 考勤出差记录体现分公司信息 考勤请假记录体现分公司信息(感谢我就是我) 考勤调休记录体现分公司信息 考勤加班记录体现分公司信息 考勤缺勤记录体现分公司信息 其他的一些优化(感谢杰锋、养山芋、*缘*、忆江南、柳照小楼东,还有许多提出意见的朋友) 2008-04-24 人力资源管理软件修正了一些问题 解决模糊查询输入只要带有字母s报错的漏洞(感谢bravelc ) 人力资源管理软件解决人事合同按日期条件检索出错的问题(感谢Fantasy Ls ) 2008-04-29 人力资源管理软件修正了一些问题 解决计件工资录入界面部门切换有时列表中多出一人的漏洞(感谢baidu ) 解决岗位维护明细中删除岗位不响应的问题(感谢独享别离 ) 2008-05-04 人力资源管理软件做了以下改进 增加了宿舍管理模块(感谢咏梅) 人力资源管理软件报表打印的时候增加了副标题,便于区分查看检索条件(感谢baidu ) 解决了工资单打印格式设置提示无权操作的问题(感谢baidu ) 2008-05-09 人力资源管理软件做了以下改进 工资单打印里面支持合计(感谢僵本 ) 人力资源管理软件员工管理界面增加按年显示的工龄(感谢hui~星辉~) 报表图形分析支持指定记录数(感谢冰雪 ) 列表里面只要按Ctrl+B就可以复制里面的数据到excel 人力资源管理软件其他做了一些优化 2008-05-14 人力资源管理软件做了以下改进 增加了休假标准管理及相关报表(感谢青莲居士CCNP) 考核指标增加了被考核后不允许删除的限制(感谢V$晴天) 工资单增加了查找员工功能(感谢中秋月) 绩效考核报表增加了单行合计内容(感谢木椽) 人力资源管理软件处理了工资单删除员工后和报表不一致的漏洞(感谢wkw) 对员工生成拼音缩写码做了优化(感谢baidu) 人力资源管理软件其他做了一些优化 2008-05-21 人力资源管理软件做了以下改进 绩效考核增加累计因素分值的模块,支持导入(感谢木椽) 员工绩效考核支持导入累计因素分值(感谢木椽) 为避免带来困扰,员工资料和调岗调职信息独立,不再互相同步 员工排班设置时,选择部门后下面员工名册中离职名单不显示了(感谢hui~星辉~) 考勤台帐明细管理界面列表显示内容支持定制(感谢hui~星辉~) 人力资源管理软件其他做了一些优化 2008-05-25 人力资源管理软件做了以下改进 分公司定义编辑:新增时顺序码自动生成; 人力资源管理软件员工保险清单编辑做了优化 员工调岗调职记录管理:当查询框的值变化后,相关复选框自动选中; 物品领用记录管理做了优化 人力资源管理软件保险支付界面下面显示出人数来(感谢青莲居士CCNP) 工资单编辑界面做了优化,速度更快(特别感谢中秋月) 工资科目定义编辑:新增时顺序码自动生成; 工资表查询:单据日期开始查询日期初始设置为本月初; 员工工资管理:单据日期开始查询日期初始设置为本月初; 计件工资管理:当订单编号、产品种类查询框的值变化后,复选框能自动选中; 考勤班组定义管理:查询某一员工所属的班组增加查询条件; 其他做了一些优化 2008-05-26 人力资源管理软件做了以下改进 人力资源管理软件模板文件导入方式的员工资料项目允许定义了;(感谢M PLAN ,有牙齿) 福利定义挂接到功能菜单下(感谢沙山兔) 人力资源管理软件解决请假字典改了后界面下拉列表不更新问题(感谢沙山兔) 2008-05-28 人力资源管理软件做了以下改进 工资项目计算支持引用员工资料信息; 工资项目定义里面加了合法性检查,不允许包含运算符号;(感谢點煙抽寂寞) 人力资源管理软件考勤机接口采用统一规范; 2008-05-28 人力资源管理软件做了以下改进 人力资源管理软件统计报表合计后加了记录数;(感谢可儿) 2008-06-04 人力资源管理软件发布1.7版本,做了以下改进 支持领导查询,WEB接入方式 支持WEB方式考勤打卡 考勤支持自动插班(感谢小太阳、明) 其他的一些优化 2008-06-08 人力资源管理软件做了以下改进 工资增加了生成银行代收文件的功能 工资录入窗口单元格移动增加了提示,便于查看(感谢中秋月) 下拉员工选择做了优化(感谢Simon) 领导查询做了优化 工资计算公式的时候科目对应值传入不再乘以100(感谢點煙抽寂寞、锁所妈妈) 其他的一些优化 2008-06-09 人力资源管理软件做了以下改进 图形报表增加标签显示方向的选项(感谢冰雪) 考勤报表做了优化(感谢Allen ) 其他的一些优化 2008-06-10 人力资源管理软件做了以下改进 解决考勤关注和月统计台帐权限码不一致的问题(感谢Simon) 考勤排班里面去除已经离职的人员(感谢天隼,Allen,青莲居士CCNP) 2008-06-11 人力资源管理软件做了以下改进 解决了考勤跨天班次处理的漏洞(感谢Simon) 网页上增加基于员工资料的企业通讯录功能(感谢木木) 员工报表做了优化(感谢Fantasy Ls) 2008-06-12 人力资源管理软件做了以下改进 增加了一张的物品领用报表(月份、部门、物品性质、物品、数量、金额)(感谢鸳) 考勤月台帐增加统计开始日期和结束日期,提取数据功能要根据这2个日期来限制,比如200806的台帐,可能用的统计数据是从20080526到20080625的(感谢Simon) 处理了排班台帐部门可能和资料不一致的问题(感谢Simon) 优化了台帐处理(感谢Simon) 2008-06-13 人力资源管理软件做了以下改进 考勤台帐处理改为上班取第一条时间段内的记录,下班取最后一条时间段内的记录(感谢天隼,Simon) 解决考勤打卡记录采集权限码不一致的问题(感谢Simon) 2008-06-15 人力资源管理软件做了以下改进 员工管理界面的窗口大小支持定制了(感谢风中游隼) 2008-06-23 人力资源管理软件做了以下改进 考勤处理支持批量补卡(感谢Simon) 处理了请假、缺勤、出差、加班导入权限码不一致的问题(感谢Simon) 优化了领导查询的报表(感谢Fantasy Ls) OA增加操作员关系定义(定义上下级,用于控制权限) OA增加了任务管理(基于WEB) 其他的一些优化 2008-06-26 人力资源管理软件做了以下改进 增加了一张宿舍管理报表(感谢沙山兔) OA(WEB)首页进行了优化 OA(WEB)增加了计划管理 OA(WEB)增加了新闻管理 OA(WEB)增加了经典警句管理 其他的一些优化(感谢提出意见的朋友) 2008-07-03 人力资源管理软件做了以下改进 WEB访问做了一些优化 2008-07-15 人力资源管理软件做了以下改进 增加了BBS(企业论坛)功能模块 增加了Blog(企业博客)功能模块 增加了员工证照管理模块(感谢蓝血人) Web访问功能做了一些增强 2008-07-28 人力资源管理软件发布1.9版本,做了以下改进 增加了招聘计划管理模块(感谢查无此人) 增加名片管理模块 增加日程安排模块 考勤排班支持了循环排班,支持针对部门、班组、员工的自动班次设置(感谢Allen、kepo、haiyunfei) 办公物品管理进行了改进,支持存量管理,购买、发放、盘点等操作(感谢风尘) 工资管理增加了根据税后应发反算税前应发的函数 优化了显示定制(感谢秒表) 其他的一些优化(感谢辉辉、狼人和其他提出意见的朋友们) 2008-08-03 人力资源管理软件做了以下改进 打印模板增加首页标题区(只在第一页打印)(感谢中秋月) 打印模板增加首页是否打印顶部区的选项(感谢中秋月) 增加了调岗调职自动同步档案信息的选项(感谢Helios) 保存支持输出到html格式文件 登录用户名支持选择 2008-08-12 人力资源管理软件做了以下改进 解决了小秘书发短信中报端口不能为空的问题 解决了工资、银行文件保存为excel文件第一列数据项不能合计的问题(感谢ucw) 关闭了默认弹出的浏览窗口 其他的一些优化 2008-08-13 人力资源管理软件做了以下改进 培训记录增加了小时数(感谢深海鱼) 人才卡片增加了人才来源(感谢迷路) 保存到excel做了改进(感谢依依) 其他的一些优化 2008-08-20 人力资源管理软件做了以下改进 增加了调薪管理模块(感谢钢铁汉子) 增加了发卡换卡模块(感谢囧rz) 绩效累计分允许输入负数(感谢清风-丽影) 保险类型定义增加了小数位数选项(感谢僵本和提出意见的朋友) 考勤增加了下次打卡最小间隔选项参数(感谢囧rz) 处理了员工奖罚数据字典的自动刷新问题(感谢浪迹★天涯) 保险标准编辑做了优化(感谢僵本) 格式显示针对升级做了优化(感谢阳光早享受) 工资计算支持月工龄参数 导入模块做了优化 其他的一些优化(感谢提出意见的朋友们) 2008-08-22 人力资源管理软件做了以下改进 增加了培训教师管理模块(感谢琳子) 增加了培训需求管理模块(感谢深海鱼) 人事管理增加了一张按辅助分组统计的报表(感谢中秋月) 保存到文件做了优化 其他的一些优化(感谢提出意见的朋友们) 2008-08-24 人力资源管理软件做了以下改进 优化了报表打印功能 优化了保存到文件功能(感谢傻呆了) 基本人事报表部分条件选项增加了辅助分组(感谢中秋月) 培训教师管理模块增加了定义教师类型的按钮(感谢傻呆了) 2008-08-26 人力资源管理软件做了以下改进 支持数据库扩展文件的管理,照片从数据库剥离,便于备份(感谢RickLee) 工资单打印增加了0是否打印的选项(感谢风起缘来) 保险标准支持历史记录的保存(感谢lzb700) 电脑考勤支持按照员工工号和密码来考勤(感谢 lmd) 解决考勤台帐显示定制里工号定制了也不显示的问题(感谢囧rz) 增加了数据库压缩功能(感谢RickLee) 解决教师类型无法定义的问题(感谢傻呆了) 员工资料增加了打卡密码 OA权限控制的优化(感谢阿炎电脑) 其他的一些优化(感谢提出意见的朋友们) 2008-08-29 人力资源管理软件做了以下改进 员工资料增加了员工文件管理,可以用来管理员工的证件复印件、简历文件等(感谢【强】、RickLee) 工资单打印增加了打当前页按钮(感谢风起缘来) 报表打印增加了标题、表格线等选项(感谢baidu,风起缘来) 考勤员工汇总表增加了工号(感谢囧rz) 处理了08-26升级没有扩展保险支付表的问题(感谢 lzb700) 其他的一些优化(感谢提出意见的朋友们) 2008-09-02 人力资源管理软件做了以下改进 解决了调岗调职的一个漏洞(感谢风舞雪) 2008-09-05 人力资源管理软件做了以下改进 工资软件里的工资单,下面加了人数汇总(感谢水至纯) 工资单增加了显示是否包含子部门数据的选项(感谢水至纯) 调岗调职清单界面支持显示定制(感谢风舞雪) 解决奖励记录管理里新增默认部门未设置的问题(感谢风舞雪) 工资单从外部复制数据后要提示后自动重新计算(感谢傻呆了) 解决了部门结构树显示顺序不一致的问题(感谢我就是我) 报表保存到文件增加了合计行(感谢大富猫) 工资单保存到文件增加了合计行(感谢大富猫) 从历史工资导入支持是否复制公式的选项(同时作为习惯参数)(感谢傻呆了) 合同管理要支持同步到资料(感谢我就是我) 员工证件管理增加一个证件状态(state)(感谢傻呆了) 2008-09-08 人力资源管理软件做了以下改进 员工证件中加上一个备注信息(感谢阿炎电脑) 小秘书增加了工作日记模块(感谢ljj) 2008-09-10 人力资源管理软件做了以下改进 工资单编辑增加了 Ctrl+Home Ctrl+End Shift+Home Shift+End热键(感谢风起缘来) 代收文件输出文件增加了人数和合计金额(感谢风起缘来) 解决了部门打印出错的问题(感谢#小幺#) 2008-09-11 人力资源管理软件做了以下改进 工资报表增加了工资科目的限制条件(感谢风起缘来) 员工按辅助分组报表双击支持显示相应的员工清单(感谢风起缘来) 银行代收文件,工资金额为0的员工不再提取出来(感谢风起缘来) 小秘书的权限做了优化 2008-09-13 人力资源管理软件做了以下改进 年休标准检索条件增加职工状态,默认为在职(感谢南京-芸) 年休标准规则定义进行了优化,支持工龄细化到月(感谢南京-芸) 工资单增加备注信息(感谢风起缘来) 进入惩罚编辑界面后,公司、部门允许调整(感谢幽幽兰) 进入奖励编辑界面后,公司、部门允许调整(感谢幽幽兰) 进入培训记录编辑界面后,公司、部门允许调整(感谢幽幽兰) 优化了报表里的显示定制(感谢风起缘来) 2008-09-18 人力资源管理软件做了以下改进 导航界面的分组、按钮、右侧功能标签支持定制,每个操作员可以定义自己方便的导航方案,在导航界面上点鼠标右键弹出菜单(感谢lxp,还有很多的朋友) 工资报表的按员工分类、按时间分类、清单报表后面均增加备注和签名2列,默认隐藏(感谢风起缘来) 工资单打印,在没有勾选"含部门汇总"的情况下,工资单打印支持最后一行的"合计"(感谢baidu) 工资报按企业、部门统计的报表,增加部门人数(感谢风起缘来) 增加按籍贯省份统计员工的报表,便于分析。(感谢风起缘来) 员工资料支持指定顺序(感谢中秋月、风起缘来) 部门报表增加显示下级部门人数以及合计(感谢yeats) 公司编号支持修改,双击公司编号编辑框弹出修改界面 部门编号支持修改,双击部门编号编辑框弹出修改界面 岗位编号支持修改,双击岗位编号编辑框弹出修改界面 员工编号支持修改,双击员工编号编辑框弹出修改界面 请假单增加单据号(感谢冰凌儿) 加班单增加单据号(感谢冰凌儿) 2008-09-21 人力资源管理软件做了以下改进 调休单增加单据号(感谢冰凌儿) 2008-09-26 人力资源管理软件做了以下改进 增加了任务管理模块 考勤的统计台帐统计项增加了从考勤明细统计的加班数据(感谢无极星) 增加一张报表按职工类别进行统计的报表(感谢浩) 考勤班次定义做了优化(感谢魔鬼之子) 加班单增加补偿状态、支付金额(感谢sherry) 加班报表清单增加了补偿状态、支付金额、折算系数、小时数、结束时间等内容(感谢sherry) 日期提醒界面加了一个选项,是否显示离职的,默认不显示(感谢ep~ny) 2008-09-27 人力资源管理软件做了以下改进 员工基本信息中,加入招聘来源一项(感谢奇思) 增加一张员工按照招聘来源统计的报表(感谢奇思) 增加一张员工按照参加工作后工龄统计的报表(感谢奇思) 增加了一个计算器,按F7弹出(感谢麻辣花生) 2008-10-06 人力资源管理软件做了以下改进 增加了会话讨论功能,支持操作员之间在线交流(感谢武汉_花生、12711097) 增加了一个日历表(感谢麻辣花生、快乐心情、测绘经理人) 增加员工外勤管理及相关报表(感谢冰凌儿) 解决了点击定义我的工具箱报错的问题(感谢baidu) 人才卡片支持导入,管理界面的列表支持显示定制(感谢河北-班少、沧海) 增加外勤类型、加班类型等数据字典的维护(感谢冰凌儿) 2008-10-13 人力资源管理软件发布2.0版本,做了以下改进 增加了黑名单管理模块(感谢Smiling) 增加了备忘录模块 通用导入模块增加了检索功能,为批量修改数据提供方便(感谢baidu) 考勤文本格式增加了excel导入支持,类型码为D(感谢奇思) 支持安全家庭办公,通过互联网接入企业内网(感谢liuhefj) 2008-10-14 人力资源管理软件做了以下改进 年休标准自动按照2008新标准生成(感谢南京-芸、奇思) 人事管理各界面根据员工状态加以颜色区分 2008-10-23 人力资源管理软件做了以下改进 增加了车辆管理模块,包括车辆资料管理、车辆维修管理、派车管理 扩展了专业长度(感谢奇思) 检索支持组合码(感谢奇思) 其他的一些改进 2008-10-24 人力资源管理软件做了以下改进 增加了应聘人员管理模块(感谢sally,奇思) 2008-10-25 人力资源管理软件做了以下改进 解决员工更改工号之后,原来上传的文件没有同步的问题(感谢Dee) emp宿舍管理要显示出空余数量(额定-入住数)(感谢青岛HR李R) 2008-10-31 人力资源管理软件做了以下改进 互联网访问模式做了优化,支持异地内网的机器访问异地内网的服务器(无需域名或固定IP) 人事合同管理界面增加了部门和工号显示(感谢sherry) 处理了考勤班次设置为参考型时的一个漏洞(感谢奇思) 2008-11-03 人力资源管理软件做了以下改进 奖励记录增加单据号(感谢evan510) 惩罚记录增加单据号(感谢evan510) 培训清单报表增加培训内容列(感谢龙之水子) 员工编辑界面出生年月、工作日期修改后界面上的工龄和年龄立刻刷新(感谢一定要幸福) 岗位名称长度加以扩展(感谢龙之水子) 工资按员工分类报表部门前面增加公司列,可通过显示定制加以显示(感谢提出意见的朋友) 工资按时间分类报表部门前面增加公司列,可通过显示定制加以显示(感谢提出意见的朋友) 工资清单级报表部门前面增加公司列,可通过显示定制加以显示(感谢提出意见的朋友) 2008-11-07 人力资源管理软件做了以下改进 解决互联网远程接入的一个漏洞(感谢风叶依旧) 解决秘书名片管理中显示定制后内容不显示的问题(感谢风) 工资按员工、时间分类报表检索条件支持职工状态(感谢龙之水子) 修正了工资报表中按分公司、按部门、按职工类别统计的人数(感谢浩) 请假单保存前根据工号和日期检查,是否已经存在该员工该日的记录(感谢奇思) 考勤报表的员工汇总表和统计数据员工汇总表检索条件增加职工类别(感谢龙之水子) 报表具体选中哪个,那个选项就有一个特别的标志(感谢霸气小女人) 日期提醒里面日生日和月生日清单均加上农历生日列(感谢天●龙) 培训清单报表增加小时数列,员工培训按方式报表增加小时数,奖励金额列名改为培训费用(感谢深海鱼) 考勤统计项支持生成按照加班类别的分项统计(感谢龙之水子) 调职增加单据号(感谢僵本) 2008-11-08 人力资源管理软件做了以下改进 调休增加小时,开始时刻(感谢奇思) 考勤台帐时中,迟到\甲退...非正常的记录用红字显示(感谢广东中山吴) 请假、加班、缺勤、外勤管理编辑界面增加:查看该日打卡记录(感谢奇思) 2008-11-12 人力资源管理软件做了以下改进 解决互联网远程接入服务程序定期不响应的问题(感谢风叶依旧) 增加了web方式修改员工密码的功能(感谢闲似鹤) 增加了web方式查询工资的功能(感谢闲似鹤) 解决了日期提醒中部分结束日期显示为农历日的问题(感谢奇思) 解决了自由导入模式生成模板文件列缩拢的问题(感谢广东中山吴) 互联网接入模式速度做了优化 2008-11-14 人力资源管理软件做了以下改进 日期提醒做了优化(感谢奇思) 工资报表增加了平均费用,可以通过显示定制显示出来(感谢浩) 工资报表增加了3张分月报表,利于做费用分析(感谢浩) 培训管理增加了培训类型(感谢龙之水子) 增加一张按照培训类型统计的报表(感谢龙之水子) 支持保险支付按公司显示(感谢rolita) 调休、外勤、请假等天数支持小数点后2位(感谢奇思) 解决目录切换后助记码不生成的问题(感谢南京+周+R) 2008-11-20 人力资源管理软件做了以下改进 考勤的加班记录录入支持跨天(感谢奇思) 解决员工合同管理界面按日期检索的问题(感谢爱就像天使) web模式的员工报告增加描述信息的输出 2008-12-01 人力资源管理软件发布2.1版本,做了以下改进 计件工资增加了价格管理模块,增强了工资计价的灵活性(感谢Snander、baidu) 优化了对部门重名的处理(感谢维色卓玛) 优化了对员工重名的处理(感谢维色卓玛) 互联网模式内网接入做了优化 保险标准管理界面姓名前面显示 公司、部门、工号,支持显示定制 其他的一些优化(感谢提出意见的朋友们) 2008-12-03 人力资源管理软件做了以下改进 增加切换操作员的功能(感谢francesca) 解决员工管理和岗位异动显示定制互相干扰的问题(感谢一棵黄桷树) 请假、出差、加班、调休、缺勤、外勤管理窗口支持显示定制(感谢奇思北京hr刁R) 增加了人资数据字典维护窗口 2008-12-07 人力资源管理软件做了以下改进 计件工资管理窗口增加了重新计价的功能(感谢baidu) 工资单增加了岗位、银行帐户、职工类别等内容,默认隐藏,可以通过显示定制显示出来(感谢 想家) 工资单打印参数增加了岗位、银行帐户、职工类别等内容,可以通过修改模板加以打印(感谢 想家) 2008-12-12 人力资源管理软件做了以下改进 增加制作工卡的打印(感谢szcz) 岗位增加了描述信息(感谢风叶依旧) 解决职工类别为空导致工资按职工类别汇总统计出错的问题(感谢想家) 员工资料增加了最高学位(感谢上海-kevin、奇思) 合同管理里面的合同编号支持修改(感谢梦里水中游) 优化了当年入职员工的年休假计算(感谢奇思北京hr刁R) 小秘书权限控制做了优化(感谢谭伟) 员工资料用户自定义增加到8个 其他的一些优化 2008-12-18 人力资源管理软件做了以下改进 增加按最高学位统计的报表(感谢奇思北京hr刁R) 员工年休假管理做了优化(感谢奇思、小石头) 调休记录区分年假调休和加班调休(感谢小石头) 解决考核模块中累计分管理里面日期只显示年和月的问题(感谢冰凌儿) 解决按照员工检索领用物品的问题(感谢一棵黄桷树) 解决按照驾驶员条件检索车辆使用记录(感谢奇思北京hr刁R) 招聘人员卡片增加期望薪水(感谢奇思北京hr刁R) 自定义分组增加批量添加员工功能(感谢zhuyijun) 合同模板制作里面支持引用员工资料(感谢goddness001) 物品进出记录编辑增加复制新增功能 (感谢一叶舟) 员工管理界面中对定义为日期型的扩展字段显示加以优化(感谢Danny) 优化扩展定义统计、查询模块(感谢奇思) 2008-12-24 人力资源管理软件做了以下改进 增加了费用管理模块(感谢奇思北京hr刁R) 打印做了优化,支持折行(感谢健,天剑) 报表输出支持保存为wps的表格文件(感谢好想▄好想) 工资科目和套餐里去掉了默认值 其他的一些优化 2008-12-28 人力资源管理软件做了以下改进 调休记录增加了年度标识(感谢冰凌儿) 调休报表做了优化(感谢冰凌儿) 年休标准管理界面要支持显示定制 应聘人员管理支持自定义查询功能(感谢奇思) 日常费用管理支持导入(感谢奇思) 应聘人员管理 中 增加 信息来源 检索项目(感谢奇思) 打印模板设计做了优化,支持取消上一操作功能 2009-01-04 人力资源管理软件做了以下改进 惩罚管理做了优化(感谢霸气小女人) 扩展了培训记录的标题长度 (感谢mobby) 解决了考勤补卡没有更新员工资料的问题(奇思) 解决新增操作员后在操作员关系中未刷新列表的问题(一棵黄桷树) 物品进出记录管理中增加显示物品金额,支持显示定制(鱼 儿) 调休统计表里增加了年度列和条件(冰凌儿) 应聘人员录入增强了人员重复的检查(奇思) 惩罚记录的原因描述长度做了扩展(感谢zhuyijun) 其他的一些优化 2009-01-16 人力资源管理软件做了以下改进 调休管理同时支持国家标准和企业标准(感谢冰凌儿,唐艺铭) 增加了企业文档管理 (感谢shenlan666800,涂糊得难) 应聘人员的籍贯长度进行了扩展(虾米东东) 考勤月台帐支持统计各类班次的数量(感谢龙之水子,shishiruyan) 报表打印模块做了优化,支持套打和固定行数(感谢不再犹豫) 工资、考勤部分报表条件做了优化 其他的一些优化 2009-01-20 人力资源管理软件做了以下改进 考勤日台帐增加了上下班时刻的单独列(默认是隐藏的,可通过显示定制显示出来)(感谢plokmxv) 其他的一些优化 2009-01-22 人力资源管理软件做了以下改进 工资单增加直接从excel导入功能(感谢浮尘) 保险支付选择标准界面增加了是否包含离职人员的选项(水至纯) 照片的大小限制放大到3M(感谢lygwk) 2009-02-05 人力资源管理软件做了以下改进 解决多个常规任务计划不能全部加载的问题(感谢奇思) 解决导入资料拓展属性不能超过4个的问题(感谢把风甩开) 2009-02-07 人力资源管理软件做了以下改进 报表打印支持模板设计 列表打印做了优化 导入模块做了优化(感谢奇思) 人事合同管理需要支持导入的功能(感谢嗨納佰〣) 其他的一些改进 2009-02-10 人力资源管理软件做了以下改进 解决工资单录入无法输入备注信息的问题(感谢冰凌儿) 自定义条件数据提取的优化(奇思) 2009-02-20 人力资源管理软件做了以下改进 奖励管理增加处理方式(感谢fushuwei) 惩罚管理增加处理方式(感谢fushuwei) 合同管理增加合同年限内容(感谢abcd7006 ) 解决了人事合同扩展信息信息覆盖的问题(感谢mobby) 奖励和惩罚 管理界面,增加'显示定制'功能 员工证件 管理界面增加导入功能 优化了车辆卡片管理模块 论坛页面的友情链接支持定制 2009-02-21 人力资源管理软件做了以下改进 人事异动报表增加一张员工变动汇总表(感谢fushuwei) 计划管理按照上下级管理,上级可以调取下级的相关计划(感谢房) 2009-02-23 人力资源管理软件做了以下改进 人才卡片的编辑做了优化(感谢奇思) 工资查询模块的清单列表中显示工资单录入中的备注信息,支持模糊查询(感谢冰凌儿) 人才卡片、应聘资料、员工资料支持复制员工信息和黏贴信息(感谢浙江豪宇) 优化限定企业的处理(感谢风) 考勤支持通过web输入工号和密码打卡(感谢simonzhan) 其他的一些优化(感谢zwd) 2009-02-26 人力资源管理软件做了以下改进 优化了打印输出到excel文件的处理(感谢meteor) 优化了调休标准的导出(感谢电力) 优化了保险支付数据的导出(感谢no name) 员工技能支持导入(感谢lzb700) 其他做了一些改进(感谢精棉棉业、董荟) 2009-03-03 人力资源管理软件做了以下改进 优化了应聘人员管理编辑界面(感谢奇思) 其他做了一些改进(感谢ssp苏) 2009-03-05 人力资源管理软件做了以下改进 增加一张按照部门统计物品使用报表(感谢zwd) 工序价格管理检索条件支持按订单搜索(感谢小虫) 打印部门清单进行了优化(感谢中國通關) 日期提醒增加一个退休提醒(感谢雨心) 保险支付选择支付标准记录支持过滤停用和失效的记录(感谢西安_HR_雪虫) 优化了报表按照模板打印,解决了部分报表打印不准的问题(感谢风) 企业工龄标准要支持年龄规则(感谢小石头) 2009-03-10 人力资源管理软件做了以下改进 证件管理支持复检以及相应的提醒(感谢心中的世界) 考勤记录支持通用型导入 员工资料编辑界面的合同终止和试用期终止标签点击支持弹出菜单,自动根据期限设置结束日期(感谢噯祢méi緔靓) 培训记录管理做了优化(感谢tl2222 ) 优化了生成合同文件的处理(感谢中國通關) 2009-03-19 人力资源管理软件做了以下改进 员工资料的描述属性扩展到支持30(感谢奇思) 员工资料、合同管理、应聘人员等支持批量删除(感谢中國通關) 2009-03-26 人力资源管理软件做了以下改进 解决员工保险四舍五入误差一分的问题(感谢僵本) 解决员工分组报错的问题(感谢奇思) 列表打印做了优化,处理打印行高问题 解决服务端软件自动备份和人工备份可能不一致的问题(感谢清凉寺的钟声) 员工管理功能菜单下增加一个根据身份证设置性别、生日、籍贯等信息的功能 照片区域处理做了优化(感谢云海、kevin zhang) 宿舍性别数据字典支持自定义(感谢云海) 计件工资录入增加了是否显示离职人员的选项(感谢张锦华) 2009-04-01 人力资源管理软件做了以下改进 模板打印和列表打印做了优化(感谢jztsky) 工号编码自动生成做了优化(感谢狼仔、笑看人生) 模板打印的图片打印进行了优化(感谢魔羯) 证件管理编辑界面做了优化(感清风) 应聘人员信息增加了创建人和日期内容(感浮尘、累哦) 解决了文档管理上传文件重名的问题(感谢累哦 休息) 模板设计做了优化 列表打印增加了序号选项 其他的一些优化 2009-04-03 人力资源管理软件做了以下改进 补卡发卡支持批量导入功能(感谢mobby) 工号编码自动生成做了优化(感谢笑看人生) 人事资料的相关报表要支持父部门限制 考勤的相关报表要支持父部门限制 工资的相关报表要支持父部门限制 工资单编辑界面做了优化,支持清除列(感谢亮亮) 累积分管理做了优化 其他的一些优化(感谢梦重楼) 2009-04-11 人力资源管理软件做了以下改进 工资单据多针对多公司选择标准做了优化(感谢KEN) 生成新增员工编号做了优化(感谢一叶舟) 解决无法删除名片的问题(感谢奇思) 支持应聘人员卡片打印(感谢59医院) 员工调岗调职管理界面上需要增加对员工状态的条件支持(感谢一棵黄桷树) 员工福利管理界面列表增加显示费用列(感谢淡彩浓墨) 单据打印界面里面保存到excel做了优化(感谢metor) 部分权限控制做了优化(感谢mobby) 其他的一些优化 2009-04-15 人力资源管理软件发布2.2版本,做了以下改进 工资单支持发送邮件到员工邮箱(感谢碧蓝) 考勤台帐处理自动合并入外勤数据(感谢mobby) 考勤班次增加提前是否计时和延后是否计时选项(感谢云海) 考勤基本参数增加加班取整方式选项(感谢云海) 2009-04-20 人力资源管理软件做了以下改进 浏览器访问导航界面做了优化(感谢cch) 2009-04-22 人力资源管理软件做了以下改进 考勤月帐增加了对打卡加班+班次类型统计的支持(感谢云海) 考勤日台帐增加了备注(感谢mobby) 外勤数据处理做了优化(感谢mobby) 其他做了一些优化 2009-04-24 人力资源管理软件做了以下改进 对于周末加班处理做了优化(感谢云海) 不打卡的员工生成缺勤记录 增加了退休状态H和退休异动类型H(感谢cqswah) 其他做了一些优化 2009-05-04 人力资源管理软件做了以下改进 培训记录编辑做了优化,增加了培训效果项目(感谢kdc218) 员工编辑加强了对身份证号码合法性的检查(感谢wang214,不错) WEB报表做了一些优化 其他的一些改进(感谢 悠悠) 2009-05-06 人力资源管理软件做了以下改进 证照管理的检索条件做了扩展(感谢Tony) 工资套餐的处理做了优化(感谢幸福ing) 考勤日台帐支持删除和批量删除 增加获取税率函数(感谢幸福ing) 员工管理界面支持列的拖拉(感谢金平) 考勤处理不再自动生成离职部分员工的缺勤 工资单编辑做了一些优化 其他的一些改进(感谢 奇思,wang214) 2009-05-07 人力资源管理软件做了以下改进 考勤按天排班支持批量导入(感谢webzheng) 日期提醒做了扩展,增加了一些提醒,生日提醒做了优化,支持按月日排序(感谢累哦 休息、见习爱神ヅ) 员工管理支持按照打印模板打印 报表界面支持列的拖拉(感谢金平) 2009-05-10 人力资源管理软件做了以下改进 调岗调职记录支持导入(哈尔滨HR吴) 考勤按天排班记录单独存放,和台帐区分开来(感谢亮亮,webzheng) 考勤月台帐的显示做了优化(感谢云海) 2009-05-15 人力资源管理软件做了以下改进 工资复制员工计件工资检索记录支持指定开始日期和结束日期提取(感谢小虫) 员工资料管理界面的限制条件增加了年龄段、工龄段、司龄段(感谢wang214) 工资复制工资标准、考勤台帐增加了限制员工、科目的选项(感谢云海) 其他的一些优化 2009-05-21 人力资源管理软件做了以下改进 请假、调休、缺勤、加班、出差、外勤的清单报表里增加了部门列(感谢[HR]59医院) 从excel引入工资数据(工资单里的功能)增加了过滤选项(感谢呆头鹅) 小秘书的工作日志支持导出到word文档(感谢心兰若宇) 其他的一些改进(感谢云海、看!) 如有升级后秘书功能打不开的请重新下载下 2009-05-26 人力资源管理软件做了以下改进 考勤排班做了优化(感谢webzheng) 增加了车辆费用管理(感谢清风、杜鹃) 其他的一些改进(感谢云海、看!) 2009-05-31 人力资源管理软件做了以下改进 职工保险标准的清单报表增加"性别" "出生年日" "入职时间" "身份证号码" 等列(感谢59医院) 工资清单级报表(004)增加工资类别、部门岗位、政治面貌、技术职称、职工类别、文化程度等内容,便于二次图形分析(感谢maple) 解决了批量导入排班出错的问题(感谢一滴水) 其他的一些优化 2009-06-01 人力资源管理软件做了以下改进 人事资料弹出式选择员工后自动设置公司、部门做了优化 考勤管理弹出式选择员工后自动设置公司、部门做了优化 解决了0531升级中的2个问题(感谢奇思、云海) 2009-06-03 人力资源管理软件做了以下改进 添加一张工资标准的统计报表(感谢广东红日星) 添加一张家庭成员管理(感谢神话ヅ) 应聘人员增加期望薪水下限,下次面试日期和时刻,并且要支持面试日期检索(感谢奇思) 其他的一些改进(感谢钢铁汉子、聊聊天、云海等提出意见的朋友) 2009-06-05 人力资源管理软件做了以下改进 考勤打卡的后台处理做了优化(感谢亮亮) 考勤增加了后台处理是否自动更新请假时长的参数(感谢亮亮) 增加一张人事合同清单报表(感谢缘分天空) 人事合同管理界面需要增加职工状态选项,默认设置为在职(感谢Helina) 办公物品定义支持导入 工资公式里面增加工龄天数变量(感谢圣士、雨) 其他的一些改进(感谢云海等提出意见的朋友) 2009-06-10 人力资源管理软件做了以下改进 优化了工资编辑里面的个税计算处理(感谢leekq) 优化了网络模式下员工管理的显示(感谢将军) 家庭成员管理做了优化(感谢(立京、奇思)) 其他的一些改进 2009-06-16 人力资源管理软件发布2.3版本,做了以下改进 增加了单独工作经历管理(感谢奇思) 宿舍入住增加了床位信息(感谢冰海雪源) 名片分组支持上下级(感谢五谷子) 增加了单独学习经历管理(感谢奇思) 培训管理增加约定服务期限(感谢奇思) 其他的一些改进(感谢一叶舟、立京等提出意见的朋友们) 2009-06-18 人力资源管理软件做了以下改进 增加了对外培训管理模块(感谢奇思) 员工资料界面做了优化(感谢八王爷) 学习经历和工作经历支持导入(感谢奇思) 其他的一些改进(感谢提出意见的朋友们) 2009-06-23 人力资源管理软件做了以下改进 考核界面在完成列双击的时候自动切换完成是否的标志(感谢云南-郝智文) 从累积分导入到考核界面需要改进(感谢云南-郝智文) 请假管理界面要显示单据号(感谢皆慧) 考勤台帐右键要支持显示该天打卡记录,可参考请假管理的右键(感谢苏州-人事) 日期提醒里面 ,加入"该日面试人员"提醒(感谢奇思) 日期提醒增加"该月复检证件"日期提醒(感谢Helina) 学习经历扩展了项目(感谢lightness、奇思) 外培训服务扩展了项目并支持导入(感谢奇思) 2009-06-28 人力资源管理软件做了以下改进 支持根据应聘人员的信息创建员工 解决工资单普通操作员不允许定制套餐的问题(感谢亮亮) 解决对外培训不能导入的问题(感谢奇思) 显示某日打卡记录做了优化(感谢苏州-hxcsd ) 员工资料支持批量移动(感谢hughes6688) 考勤处理做了优化(感谢hxcsd) 其他的一些改进(感谢提出意见的朋友们) 2009-07-02 人力资源管理软件做了以下改进 支持通过onlyit服务器进行浏览器访问,无需动态域名和固定IP(见web设置) 背景图支持自定义(放个background.bmp图片到执行目录即可)(感谢keenrob) 员工福利支持倒入(感谢安安) 应聘人员增加体检结果和报到日期(感谢苏州-人事) 考勤处理做了改进(感谢℡擱㊣淺 囧?) 员工报告做了优化(感谢累哦 休息) 员工卡片中增加更多的浏览信息(感谢累哦 休息) 其他的一些优化 2009-07-07 人力资源管理软件做了以下改进 解决了文档资料记录无附件不允许删除的问题(感谢奇思) 解决员工惩罚记录无法按照工号检索的问题(感谢hxcsd) 员工卡片附加信息增加了培训记录(感谢hxcsd) 优化了物品定义的权限控制(感谢小鸭) 对外培训 检索 下面"提示信息"显示记录数(感谢奇思) 解决员工卡片中学习经历的关联问题(琦遇) 其他的一些优化 2009-07-26 人力资源管理软件做了以下改进 信息编辑界面的标签支持用户定制,可通过双击标签弹出修改 增加了人力资源综合报告模块(感谢方方) 其他的一些优化 2009-07-31 人力资源管理软件做了以下改进 员工技能增加证书编号(感谢老叮当) 工资代收文件增加身份证号(感谢王大丫) 招聘人员增加是否需要宿舍、能力程度(感谢苏州-hxcsd) 其他的一些优化(感谢琦遇、灵~~~~) 2009-08-15 人力资源管理软件做了以下改进 解决员工管理无法按照工龄检索的问题(感谢萤火虫) 员工福利管理列表需要显示部门及工号(感谢天天) web报表做了优化 秘书功能web模块做了优化 其他的一些改进(感谢tony) 2009-08-24 人力资源管理软件做了以下改进 员工报表支持自定义统计分析 年龄统计的年龄段支持自定义 其他的一些优化改进 2009-08-26 人力资源管理软件做了以下改进 web报表做了优化 其他的一些优化改进(感谢感生、琦遇) 2009-09-07 人力资源管理软件做了以下改进 工资报表支持自定义统计分析 岗位异动管理做了改进(感谢老叮当) 支持按照导入格式导出文件 其他的一些优化改进(感谢山寨大王和其他提出意见的朋友) 2009-09-10 人力资源管理软件做了以下改进 员工相关文件(如照片)支持批量导入 物品管理选择物品要支持弹出式选择(感谢京城淡淡彩) 日常费用增加了单据编号。(感谢浙C.1*326) 车辆卡片增加了外租费用(感谢缝缝衣服) 输入重复的员工卡号时弹出提示(感谢sally) 宿舍入住记录支持历史记录 其他的一些优化改进(感谢零件制造-宁静、HR奇思-刁-R、哈尔滨HR吴、 小树丫、榨油机-onlyit和其他提出意见的朋友) 2009-09-15 人力资源管理软件做了以下改进 工资科目小数点位数最多支持到4位(感谢亮亮) 培训管理列表和导入做了优化(感谢HR奇思-刁-R) 2009-09-20 人力资源管理软件做了以下改进 技能管理做了优化(感谢三亚-小七) 支持针对部门指定班次,便于按天排班方便 其他的一些优化改进(感谢HR奇思-刁-R) 2009-09-24 人力资源管理软件做了以下改进 增加了绩效考核二次分析数据基础 增加了考勤二次分析数据基础 工资要支持导入罚款、奖励金额(感谢布依风情) 宿舍管理做了优化(感谢乱了心扉) 其他的一些优化改进(感谢Tony、冰凌儿、HR奇思-刁-R、simon0913、亮亮) 2009-09-27 人力资源管理软件发布2.5版本,做了以下改进 车辆管理的维修、使用增加了里程数 计件工资的工序和工资定义支持导入。(感谢dragonfly) 其他的一些改进(感谢亮亮) 2009-09-29 人力资源管理软件做了以下改进 改进了宿舍报表(感谢京城淡淡彩) 工资单支持短信发送(感谢彭伟) 其他的一些改进(感谢亮亮) 2009-10-10 人力资源管理软件做了以下改进 增加了窗口快速切换功能(需要激活) 增加停工放假记录管理(感谢亮亮) 考勤月台帐科目最多支持到小数后4位(感谢亮亮) 人力资源的工序编号扩展到8位(感谢dragonfly) 数据分析的分类限定采用弹出式选择方式(感谢传递) 增加了用推广积分激活增强功能模块 其他的一些改进 2009-10-13 人力资源管理软件做了以下改进 外勤和停工放假支持自由式导入 宿舍入住员工清单中显示部门(感谢京城淡淡彩)。 考勤月台帐计算规则处理做了优化(感谢亮亮) 其他的一些改进(感谢奇思) 2009-10-14 人力资源管理软件做了以下改进 支持生成工资短信文件(感谢彭伟) 其他的一些改进 2009-10-21 人力资源管理软件做了以下改进 合同管理做了优化(感谢西部苍凉月、絕舞狂魅、妖) 网络模式下服务端增加压缩数据库功能(感谢francesca) 支持其他的一些改进 2009-10-28 人力资源管理软件做了以下改进 小秘书模块做了优化 合同管理的备注内容做了扩展(感谢絕舞狂魅、妖) 其他的一些改进(感谢 lyan) 2009-10-30 人力资源管理软件做了以下改进 支持秘书管理模式,迷人风格,值得拥有。(需要激活) 修正要求修改密码的问题(感谢summer) 报表展示做了优化(感谢传递) 小秘书模块更新到1.7版本,小秘书更为方便 其他的一些改进 2009-11-04 人力资源管理软件做了以下改进 小秘书增加了办公流程管理模块 中控考勤支持串口采集(把IP改为空,设置端口、速率、机器号即可)(感谢欣格格、华汉网络) 工资公式计算做了优化(感谢亮亮) 秘书管理模式支持窗口菜单(感谢传递) 其他的一些改进(感谢你也来、SMRW) 2009-11-10 人力资源管理软件做了以下改进 支持互联网模式的网站访问、消息交流 其他的一些改进 2009-11-11 人力资源管理软件做了以下改进 发布任务的时候自动进行消息通知 处理了工作日志不允许编辑的问题(感谢奇思、Richet) 其他的一些改进 2009-11-16 人力资源管理软件发布2.6版本,做了以下改进 支持导航界面上显示本企业名称。(需要激活) 物品管理增加了单位信息。(感谢安安-onlyit爱好、霸气花妖) 针对初学者增加了学习导航功能 合同管理支持批量删除界面上记录 其他的一些改进(感谢西部苍凉月) 2009-11-24 人力资源管理软件做了以下改进 检查证件缺失的界面显示出职工状态、所在部门和岗位(感谢ぷ大坏蛋ぷ) 小秘书的工作日志做了改进 其他的一些改进(感谢传递、奇思、晒干脱皮的虾) 2009-12-01 人力资源管理软件做了以下改进 员工资料管理的字典检索条件支持多选 员工资料管理员工列表支持锁定列操作(感谢不错) 考勤数据采集增加了对多时间列表格文件导入的支持 工资分析的检索条件进行了扩展(感谢不错) 其他的一些改进(感谢francesca、阿男) 2009-12-09 人力资源管理软件做了以下改进 员工管理界面的检索条件增加日期检索,包括 入职起始、入职结束,参加工作起始结束,离职起始结束时间段 增加了锁定系统的功能(感谢传递) 增加员工资料修改日志记录(感谢西部苍凉月) 计算个税做了优化(感谢海权) 选择员工界面的检索里面部分支持复合选择(感谢Danny) 其他的一些改进(感谢西部苍凉月、低调做人) 2009-12-15 人力资源管理软件做了以下改进(编译日期12-15,数据库版本12-09) 员工管理界面列表中的支持月本司工龄,年本司工龄、月工作工龄,年工作工龄(感谢zlcmmm) 其他的一些改进(感谢leo532) 2009-12-30 人力资源管理软件做了以下改进 工资标准支持从excel导入建立(感谢aze2001) 车辆使用记录管理增加生成默认车辆使用凭条和设计使用凭条打印模板功能。使用记录卡片编辑界面要支持按照使用凭条模板打印。(感谢huinan) 宿舍管理检索条件增加入住员工(感谢huinan) 学习经历管理做了优化(感谢奇思) 合同管理功能菜单下增加 提取日期已经逾期但未失效的记录 以及 将界面上已逾期但未失效的设置为失效状态的功能 其他的一些改进 2010-01-04 人力资源管理软件做了以下改进 备忘录做了优化(感谢奇思) 增加了根据自定义模板生成报表的模块(用法见dll下人力资源自定义统计报告模板.xls)。(需要激活) 常规任务管理做了优化(感谢奇思) 锁定状态下屏蔽小秘书自动提醒事务弹出(感谢奇思) 支持ctrl+F2热键锁定系统(感谢传递) 小秘书支持自动靠边隐藏停靠(感谢Yin#Live) 其他的一些改进 2010-01-09 人力资源管理软件做了以下改进 社会关系增加了部门、岗位、状态信息(感谢奇思) 合同编辑界面选择员工后在界面上显示出该员工签订的合同记录次数和最后一次的时间 员工管理功能菜单下增加 提取试用期已过但仍为试用状态的记录 以及 将界面上试用期已过但仍为试用状态的设置为合同期 的功能 人才卡片管理做了改进(感谢西部苍凉月) 派车管理显示

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧