Oct 14, 2016

how to mount a ISO file in linux


185
down vote
+50
Maybe, instead of installing additional software, you can use what the system has to this end:
  1. Create a directory to serve as the mount location:
    sudo mkdir /media/iso
    
  2. Mount the ISO in the target directory:
    sudo mount -o loop path/to/iso/file/YOUR_ISO_FILE.ISO /media/iso
    
  3. Unmount the ISO:
    sudo umount /media/iso

Sep 23, 2016

qt中pro详解

在QT中,有一个工具qmake可以生成一个makefile文件,它是由.pro文件生成而来的,.pro文件的写法如下:

1. 注释
从“#”开始,到这一行结束。
2.模板变量告诉qmake为这个应用程序生成哪种makefile。下面是可供使用的选择:
TEMPLATE = app
A> app -建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用。
B> lib - 建立一个库的makefile。
C> vcapp - 建立一个应用程序的VisualStudio项目文件。
D> vclib - 建立一个库的VisualStudio项目文件。
E> subdirs -这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的makefile。

#指定生成的应用程序放置的目录DESTDIR += ../bin
#指定生成的应用程序名
TARGET = pksystem
#配置信息
CONFIG用来告诉qmake关于应用程序的配置信息。
    CONFIG+= qt warn_on release
在这里使用“+=”,是因为我们添加我们的配置选项到任何一个已经存在中。这样做比使用“=”那样替换已经指定的所有选项是更安全的。
A> qt部分告诉qmake这个应用程序是使用Qt来连编的。这也就是说qmake在连接和为编译添加所需的包含路径的时候会考虑到Qt库的。
B> warn_on部分告诉qmake要把编译器设置为输出警告信息的。
C> release部分告诉qmake应用程序必须被连编为一个发布的应用程序。在开发过程中,程序员也可以使用debug来替换release

#指定uic命令将.ui文件转化成ui_*.h文件的存放的目录
UI_DIR += forms
#指定rcc命令将.qrc文件转换成qrc_*.h文件的存放目录RCC_DIR += ../tmp
#指定moc命令将含Q_OBJECT的头文件转换成标准.h文件的存放目录MOC_DIR += ../tmp
#指定目标文件(obj)的存放目录OBJECTS_DIR += ../tmp
#程序编译时依赖的相关路径
DEPENDPATH += . forms include qrc sources
#头文件包含路径INCLUDEPATH += .
#qmake时产生的信息,【$${a}读取变量a的字符串】,【$$(PATH)读取环境变量PATH】#message($$(PATH))
#源文件编码方式
CODECFORSRC = GBK
#工程中包含的头文件
HEADERS += include/painter.h
#工程中包含的.ui设计文件FORMS += forms/painter.ui#工程中包含的源文件SOURCES += sources/main.cpp sources/painter.cpp
#工程中包含的资源文件
RESOURCES += qrc/painter.qrc
LIBS += -L folderPath  //引入的lib文件的路径  -L:引入路径
Release:LIBS += -L folderPath // release 版引入的lib文件路径
Debug:LIBS += -L folderPath // Debug 版引入的lib 文件路径
DEFINES += XX_XX_XXX  //定义编译选项,在.h文件中就可以使用:#ifdefine xx_xx_xxx
RC_FILE = xxx.icns
7. 平台相关性处理
我们在这里需要做的是根据qmake所运行的平台来使用相应的作用域来进行处理。为Windows平台添加的依赖平台的文件的简单的作用域看起来就像这样:
win32 {
SOURCES += hello_win.cpp
}
====================================================================================================================
当你已经创建好你的项目文件,生成Makefile就很容易了,你所要做的就是先到你所生成的项目文件那里然后输入:
Makefile可以像这样由“.pro”文件生成:
    qmake -oMakefile hello.pro
对于VisualStudio的用户,qmake也可以生成“.dsp”文件,例如:
    qmake -tvcapp -o hello.dsp hello.pro
++++++++++++++++++++++++一个PRO文件实例++++++++++++++++++++++++++++++++++++++++
TEMPLATE = app     #模块配置
LANGUAGE = C++   #C++语言
CONFIG += qt warn_on debug release
#引入的lib文件,用于引入动态链接库
LIBS += qaxcontainer.lib
#头文件包含路径
INCLUDEPATH += ..\..\qtcompnent\qtchklisten\inc ..\..\qtcompnent\qtclearfile\inc ../../validator\inc\validerrcode ../../qtcompnent/qtdir/inc ../inc ../../utillib/inc/xmlapi ../../utillib/inc/util ../../xercesc ../../qtcompnent/qteditor/inc ../../qtcompnent/qtfunreview/inc ../../qtcompnent/qttable/inc ../../qtcompnent/qtversion/inc ../../qtcompnent/qtini/inc ../../icdtool/icdservices/inc ../../icdtool/dataset/inc ../../icdtool/doi/inc ../../icdtool/reportcontrol/inc ../../icdtool/GSEconctrol/inc ../../icdtool/inputs/inc ../../icdtool/SMVconctrol/inc ../../icdtool/logcontrol/inc ../../scdpreview/inc/scdpreviewtoollib ../../scdpreview/form ../../icdtool/sclcontrol/inc ../../icdtool/log/inc ../../icdtool/settingcontrol/inc ../../qtcompnent\qteditor\inc ../../qtcompnent\qttreeview\inc ../../qtcompnent\qttabwidget\inc ../../communication/inc ../../qtcompnent/qtabout/inc ../iedmanage/inc ../ldmanage/inc ../foriecrun/inc ../../qtcompnent\validset\inc
#工程中包含的头文件
HEADERS += ../inc/exportstable.h \
 ../inc/maintabwidget.h \
 ../inc/outputtab.h \
 ../inc/strutil.h \
 ../inc/treeeditview.h \
 ../inc/MainForm.h \
 ../inc/recenfileini.h \
 ../inc/ExportCIDFunction.h
#工程中包含的源文件
SOURCES += ../src/main.cpp \
 ../src/exportstable.cpp \
 ../src/maintabwidget.cpp \
 ../src/outputtab.cpp \
 ../src/treeeditview.cpp \
 ../src/MainForm.cpp \
 ../src/recenfileini.cpp \
 ../src/ExportCIDFunction.cpp
#工程中包含的.ui设计文件
FORMS = ../form/scdmainform.ui \
 ../form/exportiedform.ui \
 ../form/Exportsedform.ui \
 ../form/Importsedform.ui \
 ../form/formiminputs.ui
#图像文件
IMAGES = images/substation.png \
 images/communication.png \
 images/autocom.png \
 images/reportcfg.png \
 images/comcfg.png \
 images/filetrans.png \
 images/review.png \
 images/setting.png
#工程中包含的资源文件
RESOURCES   = Scintilla.qrc
#CONFIG -= release
CONFIG -= debug

RC_FILE = scdtool.rc
 
BINLIB = ../../bin ../../xercesc/lib
UI_HEADERS_DIR = ../inc  # .ui文件转会为**.h   存放的目录
UI_SOURCES_DIR = ../src  # .ui文件转会为**.cpp 存放的目录
QMAKE_LIBDIR = $${BINLIB}
release {
TARGET = scdtool       #指定生成的应用程序名
OBJECTS_DIR = ../../obj/scdtool/release #指定目标文件(obj)的存放目录
}
debug {
TARGET = scdtool_d     #指定生成的应用程序名
OBJECTS_DIR = ../../obj/scdtool/debug #指定目标文件(obj)的存放目录
}
MOC_DIR = $${OBJECTS_DIR}
DESTDIR = ../../bin    #指定生成的应用程序放置的目录
 ==============================================================================
1.简介:  qmake是Trolltech公司创建的用来为不同的平台和编译器书写Makefile的工具。是qt工具包的一部分.在Unixstdio.h>
  int main(int argc, char** argv)
  {
  printf("Hello, world!\n");
  return 0;
  }
  创建qmake需要的项目文件(hello.pro),
  SOURCES = hello.cpp
  CONFIG += qt warn_on release
  Makefile可以像这样由".pro"文件生成:
  qmake -o Makefile hello.pro
  现在你的目录下已经产生了一个 Makefile 文件,输入"make" 指令就可以开始编译 hello.c 成执行文件,执行 ./hello 和 world 打声招呼吧!打开这个Makefile文件看看,是不是很专业啊!
  
  4.高级操作技巧
  当然,在实际使用过程中,我们的工程不可能象这个程序这样简单的,它可能有多个目录,多个头文件,多个源文件,需要链接器它不同的链接库等等情况。别急,让我和你慢慢道来。这些都是非常容易用qmake来实现的。我们从一个更加复杂的项目文件为例和你详细的讲诉qmake的高级技巧:
  项目文件示例:
  SOURCES += myqt.cpp
  SOURCES += main.cpp
  HEADERS += myqt.h
  FORMS += xsimform.ui
  TEMPLATE = lib
  CONFIG += debug warn_on qt thread x11 plugin
  TARGET = ../bin/panel_qt
  INCLUDEPATH = ../../../../xsim ../../../../xsim/IMdkit
  DEFINES = BDB_VERSION4 OS_LINUX
  从这个文件可以知道,SOURCES变量指向项目中的源文件,当项目中有多个源文件时,我们需对项目中的每一个源文件都这样做,直到结束:


  SOURCES += hello.cpp
  SOURCES += main.cpp
  当然,如果你喜欢使用像Make一样风格的语法,你也可以写成这样,一行写一个源文件,并用反斜线结尾,然后再起新的一行:
  SOURCES = hello.cpp main.cpp
  HEADERS变量指向项目中的头文件,多个头文件的时候,和多个源文件的解决方法一致。
  FORMS变量指向项目中使用到的窗体文件(qtdesign设计的.ui文件),qmake也注意了Qt的特殊需求,可以自动的包含moc和uic的连编规则。没有的话或者非qt程序可以不写。
  TEMPLATE变量告诉qmake为这个应用程序生成哪种makefile。下面是可供使用的选择:
  app - 建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用。
  lib - 建立一个链接库的makefile。
  vcapp - 建立一个应用程序的Visual Studio项目文件。
  vclib - 建立一个库的Visual Studio项目文件。
  subdirs - 这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的mkefile。
  CONFIG变量变量指定了编译器所要使用的选项和所需要被连接的库。配置变量中可以添加任何东西,但只有下面这些选项可以被qmake识别。


  下面这些选项控制着使用哪些编译器标志:
  release - 应用程序将以release模式连编。如果"debug"被指定,它将被忽略。
  debug - 应用程序将以debug模式连编。
  warn_on - 编译器会输出尽可能多的警告信息。如果"warn_off"被指定,它将被忽略。
  warn_off - 编译器会输出尽可能少的警告信息。
  下面这些选项定义了所要连编的库/应用程序的类型:
  qt - 应用程序是一个Qt应用程序,并且Qt库将会被连接。
  thread - 应用程序是一个多线程应用程序。
  x11 - 应用程序是一个X11应用程序或库。
  windows - 只用于"app"模板:应用程序是一个Windows下的窗口应用程序。
  console - 只用于"app"模板:应用程序是一个Windows下的控制台应用程序。
  dll - 只用于"lib"模板:库是一个共享库(dll)。
  staticlib - 只用于"lib"模板:库是一个静态库。
  plugin - 只用于"lib"模板:库是一个插件,这将会使dll选项生效。
  TARGET变量指定生成的二进制代码的路径和文件名,如果建立的是一个链接库的话,它会在文件名前面自动加上"lib"和在最后自动加上".so".
  我们在使用过程中可能会使用到另外的一些函数库,链接库等。函数库的头文件指定使用INCLUDEPATH变量,其它链接库的指定可以通过LIBS 变量来指定,例LIBS += -lmath -L/usr/local/lib
  DEFINES变量的指定就如同make的-D选项一样。

主要包含两个步骤:
1.在pro中加入条件编译宏的定义,并用contains函数判断是否定义这个宏,在其中做特殊处理
DEFINES += CLIENT
contains( DEFINES, CLIENT ) {
    # VERSION contains 'CLIENT'
    message( "Configuring for CLIENT build..." )

#must be last
    ICON = $${TARGET}.png
    DESKTOP_FILE = $${TARGET}.desktop

    include(../install.pri)
}

2.在c++程序中利用ifdef 控制包含的代码
#ifdef CLIENT
#else
#endif

  
  结束语
  Autoconf 和 Automake 功能十分强大,但对于普通用户来说,太过复杂。qmake方便、简单、快捷,是一个轻量级的makefile生成工具,虽然它是qt工具包的一部分,但它也完全可以用来进行其它程序makefile文件的生成,对于大多数人来说,它已经是非常的够用了。你也可以从qt提供的许多现存的源程序中找到相关的.pro项目文件,它们是学习qmake 更多技巧的最佳范例。

Aug 3, 2016

QT resource

目录(?)[+]

简述

发福利了、发福利了、发福利了,重要的事情说三遍。。。
为了方便更多Qter了解、学习Qt,现将相关资源进行整理,主要内容包括:Qt官网、编码风格、GitHub & Third-Party、社区论坛、博客、书籍等。
满满的都是干货,独乐乐不如众乐乐。。。

Qt官网

编码风格

GitHub & Third-Party

社区论坛

国外论坛:
  • Qt-Centre: 
    http://www.qtcentre.org 
    一个非常全面的外国网站,有forum、wiki、docs、blogs等。
  • Qt-forum 
    http://www.qtforum.org 
    比较有名的国际Qt编程论坛。
  • Qt-Prop 
    http://qt-prop.org 
    可以找到很多专属的Qt应用。
  • Qt-Apps 
    http://qt-apps.org 
    可以找到很多免费的Qt应用,获得源码来学习、研究,使用时请遵守相关开源协议。
  • KDE-Apps 
    http://kde-apps.org 
    用过Linux/KDE的应该比较熟悉,里面有许多KDE-Desktop相关的应用。
  • Qt Software 
    http://www.qtsoftware.com 
    提供越来越多的第三方商业软件和开源软件的Qt用户社区。
  • QUIt Coding 
    http://quitcoding.com 
    一群享受前沿技术开发的人才,Qt官方大使项目的成员。
国内论坛:
  • CSDN Qt论坛 
    http://bbs.csdn.net/forums/Qt 
    作为中国最大的IT社区和服务平台,CSDN也在持续的关注Qt的发展,Qt技术社区也已经上线很久了,可以在里面进行知识传播 - 提问、分享自己的一些学习心得、资料等。
  • QTCN开发网 
    http://www.qtcn.org 
    国内最早、最活跃的Qt中文社区,内容丰富、覆盖面广、在线人数众多,上面有很多热心、无私的Qt爱好者,他们会帮助初学者尽快的入门。
  • Qter开源社区 
    http://www.qter.org 
    致力于Qt普及工作!里面富含Qter们开发的实用开源项目和作品,以及一系列优秀的原创教程 - 图文并茂、简单易学,力争帮助每一位初学者快速入门。
建议大家经常多去浏览一下,会有很多收获,技术文章往往有一定的深度,初学者可能会不太适应。

博客

  • 一去丶二三里 
    http://blog.csdn.net/liang19890820 
    纯正开源之美,有趣、好玩、靠谱。。。
  • 齐亮 
    http://qihome.org 
    修身-“齐家”-治天下。
  • 豆子 
    http://www.devbean.net 
    Colorful Technologies… 《Qt学习之路》系列很不错。
  • 1+1=10 
    http://blog.csdn.net/dbzhang800 
    简简单单,我的小屋…
  • foruok 
    http://blog.csdn.net/foruok 
    关注程序员的职业规划,愿更多人找到适合自己的修行路。
  • QtDebug 
    http://qtdebug.com 
    我们所做的事,所写的代码,都已经被其他人做过无数次了,这里只不过是用了我们自己的方式再演绎一次,人生如戏,全靠演技。
  • 朝闻道 
    http://www.cnblogs.com/findumars 
    朝闻道,夕可死矣!为了成为IT高手,为了挽回我失去的青春,也为了我亲爱的家人,下决心刻苦学习编程知识,虽九死而不悔! 金头盔飞行员蒋佳冀:知道了不行,熟悉也不够,要真正进入潜意识,成为条件反射才行。
  • 稀泥蟹 
    http://www.seanyxie.com 
    what will be will be, what is gone is gone…

书籍

  • 《QmlBook》 - A Book about Qt5:
  • 书名:《C++ Primer plus》 
    作者:Stephen Prata 
    介绍:从入门到精通必读经典教程。它被誉为“开发人员学习C++的教程,没有之一”! 
    这里写图片描述
  • 书名:《C++ Primer》 
    作者:Stanley B. Lippman、Josee Lajoie、Barbara E. Moo 
    介绍:久负盛名的经典教程,系统全面地介绍了C++,可以看成是学习C++的百科全书,C++程序猿必备。 
    这里写图片描述
  • 书名:《C++ GUI Qt 4编程》 
    作者:Jasmin Blanchette、Mark Summerfield 
    介绍:Trolltech的Qt培训教材,生动、全面、深刻地阐明了Qt程序的设计理念,轻松创建跨平台的解决方案。 
    这里写图片描述
  • 书名:《C++ Qt设计模式》 
    作者: Alan Ezust 
    介绍:利用跨平台开源软件开发框架Qt阐释了C++和设计模式中的主要思想,既复习了设计模式,又学了C++/Qt,对于使用其它框架也是一个非常有用的参考。 
    这里写图片描述
  • 书名:《Qt高级编程》 
    作者:Mark Summerfield 
    介绍:阐述Qt高级编程技术的书籍。以工程实践为主旨,是对Qt现有的700多个类和上百万字参考文档中部分关键技术深入、全面的讲解和探讨。 
    这里写图片描述
  • 书名:《Qt5开发实战》 
    作者:金大zhen、张红艳 译 
    介绍:在全面阐述Qt基本功能的基础上,对新增的功能和服务进行了重点介绍。同时运用大量示例,集中讲解了应用程序的开发方法、技巧和必需的API。 
    这里写图片描述
  • 书名:《Qt5开发及实例》 
    作者:陆文周 
    介绍:以Qt5.4为平台,循序渐进,在介绍开发环境的基础上,系统介绍Qt5应用程序的开发技术,通过实例介绍和讲解内容,将知识和能力融为一体。一般能够在比较短的时间内掌握Qt5应用技术。 
    这里写图片描述
  • 书名:《Qt on Android 核心编程》 
    作者:安晓辉 
    介绍:基于Qt 5.2,详细讲述如何在移动平台Android上使用Qt框架进行开发。无论是专注于传统的桌面软件开发,还是希望尝试使用Qt在Android平台开发,都可以从中获得重要的知识与实例。 
    这里写图片描述
  • 书名:《Qt Quick核心编程》 
    作者:安晓辉 
    介绍:着力于QML语言基础、事件、Qt Quick基本元素,辅以简要的ECMAScript(JavaScript)语言介绍,能够快速熟悉Qt Quick的基本知识和开发过程,详尽入微。 
    这里写图片描述
  • 书名:《Qt Creator快速入门 》 
    作者:霍亚飞 
    介绍:基于Qt Creator编写,全面涉及 Qt Quick;植根于 Qt 网络博客教程,可无限更新;对每个知识点详尽讲解,并设计了示例程序。 
    这里写图片描述
  • 书名:《Qt5编程入门》 
    作者:霍亚飞、devbean 
    介绍:基于Qt5.3编写,全面涉及 Qt Quick;植根于 Qt 网络博客教程,可无限更新;对每个知识点详尽讲解,并设计了示例程序。 
    这里写图片描述
  • 书名:《精通Qt4编程》 
    作者:蔡志明 等编 
    介绍:详细介绍了Qt的基础知识和GUI编程应用,举例翔实,内容全面,基本涵盖了Qt编程的各个方面。 
    这里写图片描述
  • 书名:《Linux环境下Qt4图形界面与MySQL编程》 
    作者:邱铁 
    介绍:基于Qt4.7,采用“深入分析控件+实例解析”的方式,配合实际工程项目,对Linux操作系统下的Qt与MySQL编程技术进行了全面细致的讲解。 
    这里写图片描述
  • 书名:《Linux Qt GUI开发详解》 
    作者:李彬 
    介绍:介绍了Linux下Qt用户界面开发的重要的核心知识,从基础界面控件使用开始,中间又详细讲解了QtWebKit的开发,语言通俗易懂,通过实例演示强化读者对章节知识点的掌握,以提高读者的实战水平及经验。 
    这里写图片描述
  • 书名:《零基础学Qt4编程》 
    作者:吴迪 
    介绍:针对初学者写的,很详细,如果看了还不会的话,那也是没谁了! 
    这里写图片描述

更多

以上所有资料,均为个人整理,代表个人观点,无任何排名、优先级之说!
持续更新,敬请期待。。。
欢迎大家将珍藏已久的经典资料共享出来,造福你我他。。。

QT settings

( 一)简单了解配置文件(.ini)格式:
number=2
[config]
node1=sucess;iii
size=20
[source]
name=PC

其中每行必须顶格写,;后的为注释部分,可用[]来定义上一层的项目。
代码示例如下:

QSettings settings("/srv/c.ini",QSettings::IniFormat);
ui->label->setText(settings.value("config/node1").toString());
ui->lineEdit->setText(settings.value("config/size").toString());
int a=settings.value("number").toInt();
qDebug("the value a is: %d",a);
(二)深入一些
QT4.0一个非常有用的类QSettings
QSettings是qt4.0提供的一个读取配置文件的类,在windows平台,它提供了ini文件读些,注册表读写的功能。而且使用也非常简单。

QSettings::Format有两种:
QSettings::NativeFormat在windows平台可以读写windows注册表.
QSettings::IniFormat可以读写ini格式的配置文件
在Unix/X11平台下这两个Format效果是一样的。
1.读写注册表
  1. //注意的就是路径名必须是"/"而不是"\\"等.否则不能读写,同时注意  
  2. //Format为QSettings::NativeFormat  
  3. QSettings *settings = new QSettings("HKEY_CURRENT_USER/", QSettings::NativeFormat);  
  4. //写HKEY_CURRENT_USER/regedit/test,设置test值为red  
  5. settings->setValue("regedit/test", "red");  
  6. //读 HKEY_CURRENT_USER/regedit/test,默认值是ddd  
  7. QString value = settings->value("regedit/test", "ddd").toString();  
  8. 删除设置对应的是settings->remove( const QString & key )
2.读取ini配置文件
ini文件格式如下:
  1. [Alpha]  
  2. Beta/Beta=1, 3, 4  
  3. Beta/Gamma=2 
  4. Beta/Delta=1111 
  5. Beta/Epsilon=5 
  6. Iota=7 
  7. Omicron=11 
  8. QSettings *settings = new QSettings(fileName, QSettings::IniFormat);  
  9. //写Beta/Beta  
  10. settings->setValue("Alpha/Beta/Beta", 68); 
其他和读写注册表差不多,我就懒得写了,发觉QT4读写的这种配置,即可兼容windows下的ini文件,同时它的功能也比windows API所提供的功能强.

(三)综合理解
QSettings *ConfigIni = new QSettings(QSettings::Ini);
ConfigIni->insertSearchPath(QSettings::Unix, "/home/Dawei");.//配置文件目录
ConfigIni->writeEntry(QString::fromUtf8("/config./opt/参数1"), QString::fromUtf8("中文"));
String aaa = ConfigIni->readEntry(QString::fromUtf8("/config./opt/参数1");
delete ConfigIni;

会在/home/Dawei目录下生成config.rc配置文件内容为
[opt]
参数1=中文

---------------------------------------
QSettings settings("../etc/bpms.conf", QSettings::IniFormat, &app);
QString db_hostname = settings.value("hostname").toString();
QString db_database = settings.value("database").toString();
QString db_username = settings.value("username").toString();
QString db_password = settings.value("password").toString();
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName(db_hostname);
db.setDatabaseName(db_database);
db.setUserName(db_username);
db.setPassword(db_password);

---------------------------------------------------------------
需要#include <QSettings>
    只举几个简单的例子:
1、用QSettings写注册表
  1. QSettings *reg = new QSettings("HKEY_CURRENT_USER\\Software\\yinhaifan",  
  2.                      QSettings::NativeFormat);  
  3.      reg->setValue("registered",true);  
  4.     delete reg;  
QSettings *reg = new QSettings("HKEY_CURRENT_USER\\Software\\yinhaifan", QSettings::NativeFormat); reg->setValue("registered",true); delete reg;
当然reg->setValue还可以写入字符串,整型之类的数据。
比如reg->setValue("registered","yes");
2、用QString读注册表
  1. QSettings *reg = new QSettings("HKEY_CURRENT_USER\\Software\\yinhaifan",  
  2.                  QSettings::NativeFormat);  
  3. if (reg->value("registered",false).toBool())  
  4. {  
  5.      QMessageBox::information(NULL,"information","registered");  
  6. }  
  7. delete reg;  
QSettings *reg = new QSettings("HKEY_CURRENT_USER\\Software\\yinhaifan", QSettings::NativeFormat); if (reg->value("registered",false).toBool()) { QMessageBox::information(NULL,"information","registered"); } delete reg;
还可以toInt(),toString()等。
3、用QSettings写ini文件:
  1. QSettings *ConfigIni = new QSettings("D:\\a.ini",QSettings::IniFormat,0);  
  2. ConfigIni->setValue("/config/node1",ui->lineEdit->text());  
  3. delete ConfigIni;  
QSettings *ConfigIni = new QSettings("D:\\a.ini",QSettings::IniFormat,0); ConfigIni->setValue("/config/node1",ui->lineEdit->text()); delete ConfigIni;
4、用QSettings读ini文件:
  1. QSettings *ConfigIni = new QSettings("D:\\a.ini",QSettings::IniFormat,0);  
  2. ui->lineEdit_2->setText(ConfigIni->value("/config/node1","20").toString());  
  3. delete ConfigIni;  
QSettings *ConfigIni = new QSettings("D:\\a.ini",QSettings::IniFormat,0); ui->lineEdit_2->setText(ConfigIni->value("/config/node1","20").toString()); delete ConfigIni;
   这几段代码都是在Qt Creator里面写的,所以用ui->lineEdit*->text()和ui->lineEdit*->setText()做输入和输出了。
   在文档中的QSettings Class Reference部分讲的很清楚
---------------------------------------------------------------------
m_nDevNo = nDevNo;
 QString strTemp;
 QString xmlPath = CSC_APP.m_strWorkPath + "/InitInfo.ini";
 QSettings *mySetting = new QSettings(xmlPath,QSettings::IniFormat);

 foreach (QString group, mySetting->childGroups())
 {
  mySetting->beginGroup(group);
  foreach (QString key, mySetting->childKeys())
  {
   QTextCodec *codec=QTextCodec::codecForName("GBK");
   QString outStr = codec->toUnicode(key.toLatin1());
   if (outStr == "自描述语言")
   {
    if ( mySetting->value(key,"0").toInt() == 1)
     ui.SelfDspLgu->setCurrentIndex(1);
    else
     ui.SelfDspLgu->setCurrentIndex(0);
   }
   if (outStr == "工作语言")
   {
    if ( mySetting->value(key,"0").toInt() == 1)
     ui.WorkLgu->setCurrentIndex(1);
    else
     ui.WorkLgu->setCurrentIndex(0);
   }
   if (outStr == "离线工作")
   {
    if ( mySetting->value(key,"0").toInt() == 1)
     ui.WorkMode->setCurrentIndex(1);
    else
     ui.WorkMode->setCurrentIndex(0);
   }
   if (outStr == "召唤自描述方式")
   {
    if ( mySetting->value(key,"0").toInt() == 1)
     ui.SelfDspSource->setCurrentIndex(1);
    else
     ui.SelfDspSource->setCurrentIndex(0);
   }
   if (outStr == "组播地址")
   {
    strTemp = mySetting->value(key,"236.8.8.8").toString();
    ui.GrpAddress->setText(strTemp);
   }
   if (outStr == "接收端口号")
   {
    strTemp = mySetting->value("接收端口号","2000").toString();
    ui.RecPort->setText(strTemp);
   }
   if (outStr == "发送端口号")
   {
    strTemp = mySetting->value("发送端口号","2001").toString();
    ui.TargetPort->setText(strTemp);
   }
   if (outStr == "启用本机地址")
   {
    strTemp = mySetting->value(key,"0").toString();
   }
   if (outStr == "本机地址")
   {
    strTemp = mySetting->value(key,"0").toString();
    ui.LocalIp->setText(strTemp);
   }
   if (outStr == "装置名称")
   {
    strTemp = mySetting->value(key,"0").toString();
    ui.EqpName->setText(strTemp);
   }
   if (outStr == "装置地址")
   {
    strTemp = mySetting->value(key,"0").toString();
    ui.EqpAddress->setText(strTemp);
   }
   if (outStr == "装置IP")
   {
    strTemp = mySetting->value(key,"0").toString();
    ui.TargetIp->setText(strTemp);
   }
  }
  mySetting->endGroup();

Qt 的QString类的使用

Qt 的QString类的使用

Qt的QString类提供了很方便的对字符串操作的接口。
  1. 使某个字符填满字符串,也就是说字符串里的所有字符都有等长度的ch来代替。
QString::fill ( QChar ch, int size = -1 )
例:
     QString str = "Berlin";
     str.fill('z');
     // str == "zzzzzz"

     str.fill('A', 2);
     // str == "AA"
2,从字符串里查找相同的某个字符串str。
int QString::indexOf ( const QString & str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive ) const
例如:
QString x = "sticky question";
     QString y = "sti";
     x.indexOf(y);               // returns 0
     x.indexOf(y, 1);            // returns 10
     x.indexOf(y, 10);           // returns 10
     x.indexOf(y, 11);           // returns -1
3指定位置插入字符串
QString & QString::insert ( int position, const QString & str )
例如:
     QString str = "Meal";
     str.insert(1, QString("ontr"));
     // str == "Montreal"
3,判断字符串是否为空。
bool QString::isEmpty () const
如:
     QString().isEmpty();            // returns true
     QString("").isEmpty();          // returns true
     QString("x").isEmpty();         // returns false
     QString("abc").isEmpty();       // returns false
4.判断字符串是否存在。
bool QString::isNull () const
例如:
     QString().isNull();             // returns true
     QString("").isNull();           // returns false
     QString("abc").isNull();        // returns false
5,从左向右截取字符串
QString QString::left ( int n ) const
例如:
     QString x = "Pineapple";
     QString y = x.left(4);      // y == "Pine"
6,从中间截取字符串。
QString QString::mid ( int position, int n = -1 ) const
例如:
  QString x = "Nine pineapples";
     QString y = x.mid(5, 4);            // y == "pine"
     QString z = x.mid(5);               // z == "pineapples"
7,删除字符串中间某个字符。
QString & QString::remove ( int position, int n )
例如:
     QString s = "Montreal";
     s.remove(1, 4);
     // s == "Meal"
8,替换字符串中的某些字符。
QString & QString::replace ( int position, int n, const QString & after )
例如:
     QString x = "Say yes!";
     QString y = "no";
     x.replace(4, 3, y);
     // x == "Say no!"
9,以某个字符切割字符串。(最近经常用到的)
QString QString::section ( QChar sep, int start, int end = -1, SectionFlags flags = SectionDefault ) const
例如:
复制代码
   QString str;
     QString csv = "forename,middlename,surname,phone";
     QString path = "/usr/local/bin/myapp"; // First field is empty
     QString::SectionFlag flag = QString::SectionSkipEmpty;

     str = csv.section(',', 2, 2);   // str == "surname"
     str = path.section('/', 3, 4);  // str == "bin/myapp"
     str = path.section('/', 3, 3, flag); // str == "myapp"
复制代码
10,把整型,浮点型,或其他类型转化为QString
QString & QString::setNum ( uint n, int base = 10 )
相类似的还有好多重载函数,想深入了解,还是要看Qt帮助文档的。