linux窗口程序设计 pdf_linux程序设计pdf - CSDN
  • Linux窗口程序设计—Qt4精彩实例分析》pdf及源码
  • 本书共分11章,以循序渐进的方式对 Qt应用开发进行了介绍,涵盖了界面外观、图像处理、磁盘文件、网络与通信、事件等程序设计中经常涉及的内容。作者希望通过本书为想学习Qt编程的读者提供入门的指导,也为从事Qt...
  • Linux窗口程序设计:Qt4精彩实例分析 基本信息 ·出版社:清华大学出版社 ·页码:316 页 ·出版日期:2008年11月 ·ISBN:7302181586/9787302181583 ·条形码:9787302181583 ·版本:第1版 ·装帧:平装 ·开本:...
  • 1、new project,选择applications,qt widgets application,choose。 2、命名,存储路径,next。 3、next。 4、类名,头文件,源文件...5、程序代码如下: standarddialogs.h文件 #include #include #includ

    1、new project,选择applications,qt widgets application,choose。

    2、命名,存储路径,next。

    3、next。

    4、类名,头文件,源文件,选择基类为对话框,generate form不选,next,finish。

    5、程序代码如下:

    standarddialogs.h文件

    #include<QDialog>
    #include<QGridLayout>
    #include<QPushButton>
    #include<QLineEdit>
    #include<QFrame>
    
    class StandardDialogs:public QDialog
    {
        Q_OBJECT
    public:
        StandardDialogs(QWidget *paremt=0,Qt::WindowFlags f=0);
        //~StandardDialogs();
    
    public:
        QGridLayout *layout;
        QPushButton *filePushButton;
        QPushButton *colorPushButton;
        QPushButton *fontPushButton;
        QLineEdit *fileLineEdit;
        QLineEdit *fontLineEdit;
        QFrame *colorFrame;
    
    private slots:
        void slotOpenFileDlg();
        void slotOpenColorDlg();
        void slotOpenFontDlg();
    
    };
    

    standarddialogs.cpp文件

    #include "standarddialogs.h"
    #include <QFileDialog>
    #include <QColorDialog>
    #include <QFontDialog>
    
    
    StandardDialogs::StandardDialogs( QWidget *parent,Qt::WindowFlags f )
        :QDialog( parent,f )
    {
        setWindowTitle(tr("标准对话框"));
        layout = new QGridLayout(this);
    
        filePushButton = new QPushButton;
        filePushButton->setText(tr("文件对话框"));
    
        colorPushButton = new QPushButton;
        colorPushButton->setText(tr("颜色对话框"));
    
        fontPushButton = new QPushButton;
        fontPushButton->setText(tr("字体对话框"));
    
        fileLineEdit = new QLineEdit;
    
        fontLineEdit = new QLineEdit;
        fontLineEdit->setText(tr("hello world"));
    
        colorFrame = new QFrame;
        colorFrame->setFrameShape(QFrame::Box);
        colorFrame->setAutoFillBackground(true);
    
        layout->addWidget( filePushButton ,0,0);
        layout->addWidget(fileLineEdit ,0,1);
        layout->addWidget(colorPushButton ,1,0);
        layout->addWidget(colorFrame ,1,1);
        layout->addWidget(fontPushButton ,2,0);
        layout->addWidget(fontLineEdit,2,1);
        layout->setMargin(15);
        layout->setSpacing(10);
    
        connect(filePushButton,SIGNAL(clicked()),this,SLOT(slotOpenFileDlg()));
        connect(colorPushButton,SIGNAL(clicked()),this,SLOT(slotOpenColorDlg()));
        connect(fontPushButton,SIGNAL(clicked()),this,SLOT(slotOpenFontDlg()));
    
    }
    
    void StandardDialogs::slotOpenFileDlg()
    {
        QString s = QFileDialog::getOpenFileName(
                    this,
                    "open file dialog",
                    "~/",
                    "C++ files(*.cpp);;C files(*.c);;Head files(*.h)"
                    );
        fileLineEdit->setText( s.toLatin1() );
    }
    
    void StandardDialogs::slotOpenColorDlg()
    {
        QColor color = QColorDialog::getColor(Qt::red);
    
        if(color.isValid())
        {
            colorFrame->setPalette(QPalette(color));
        }
    }
    
    void StandardDialogs::slotOpenFontDlg()
    {
        bool ok;
        QFont font = QFontDialog::getFont(&ok);
        if(ok)
        {
            fontLineEdit->setFont(font);
        }
    }
    

    main.cpp文件

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

    6、编译运行:点击锤子,点击绿色三角。

    7、运行结果:


    展开全文
  • Linux窗口程序设计-Qt4精彩实例分析,PDF文件,包含代码
  • 本节书摘来自异步社区《Linux 高级程序设计(第三版)》一书中的第1章,第1.2节,作者:杨宗德 , 吕光宏 , 刘雍著,更多章节内容可以访问云栖社区“异步社区”公众号查看 1.2 Linux开发初步 Linux 高级程序设计(第...

    本节书摘来自异步社区《Linux 高级程序设计(第三版)》一书中的第1章,第1.2节,作者:杨宗德 , 吕光宏 , 刘雍著,更多章节内容可以访问云栖社区“异步社区”公众号查看

    1.2 Linux开发初步

    Linux 高级程序设计(第三版)
    1.2.1 Linux下C程序标准
    在Linux操作系统下进行C程序开发的标准主要有两个:ANSI C标准和POSIX标准。

    ANSI C标准是ANSI(美国国家标准局)于1989年制定的C语言标准,后来被ISO(国际标准化组织)接受为标准,因此也称为ISO C。

    POSIX标准是最初由IEEE开发的标准族,部分已经被ISO接受为国际标准。

    1.ANSI C
    ANSI C的目标是为各种操作系统上的C程序提供可移植性保证(例如Linux与Windows之间),而不仅仅限于类UNIX系统。该标准不仅定义了C编程语言的语法和语义,而且还定义了一个标准库。ISO C标准定义的头文件如表1-1所示。
    screenshot
    screenshot

    2.POSIX标准
    POSIX.1和POSIX.2分别定义了兼容操作系统的C语言系统接口以及工具标准。Posix是类UNIX系统都遵循的标准,例如Ubuntu下和RedHat下没有代码不需要移植可直接编译后执行,而在Linux下基于Posix标准完成的代码就无法在Windows下直接编译并执行。表1-2所示为26项POSIX标准定义的头文件,表1-3所示为26项POSIX标准定义的XSI扩展头文件,表1-4所示为8项POSIX标准定义的可选头文件。
    screenshot
    screenshot
    screenshot
    screenshot
    screenshot

    1.2.2 库函数和系统调用
    1.系统调用函数和库函数
    库函数用以完成常见的特定功能,通常由某一个组织制作发布,并形成一定的标准,可以应用于不同的平台而不需要做任何修改即具有极好的移植性。例如,C函数库能够被绝大多数C编译器支持。

    系统调用函数一般与操作系统相关,不同的操作系统所使用的系统调用可能不同。一般来说,如果两个操作系统差异很大,系统调用函数的可移植性就不高。例如Windows采用了系统调用的应用程序不能直接在Linux下编译运行。系统调用函数很多情况下需要访问系统特殊资源,在Linux下,系统调用采用软中断来实现,使用系统调用时,该程序的状态将从用户态切换到内核态。图1-1所示为Linux函数库调用和系统调用示意图。

    screenshot

    库函数在实现最终都需要使用系统调用,但它封装了系统调用的部分操作,用户不必关心它使用了哪些系统调用。另外,做上层应用程序开发时也没有必要深入研究系统调用函数的具体实现过程。

    2.glibc函数库
    众所周知,C语言并没有为常见的操作,例如输入/输出、内存管理等提供内置的支持。这些功能一般由标准的函数库来提供。GNU的C函数库glibc是Linux最重要的函数库,它定义了ISO C标准指定的所有库函数,以及由POSIX或其他UNIX操作系统变种指定的附加特色,还包括与GNU系统相关的扩展。目前,Linux系统大多使用glibc 2.3以上的版本。glibc基于如下标准。

    (1)ISO C。C编程语言的国际标准,即ANSI C。

    (2)POSIX。GNU C函数库实现了ISO/IEC 9945-1:1996(POSIX系统应用程序编程接口,即POSIX.1)指定的所有函数。该标准是对ISO C的扩展,包括文件系统接口原语、设备相关的终端控制函数以及进程控制函数。同时,GUN C函数库还支持部分由ISO/IEC 9945-2:1993(POSIX Shell和工具标准,即POSIX.2)指定的函数,其中包括用于处理正则表达式和模式匹配的函数。

    (3)Berkeley UNIX(BSD和SunOS)。GNU C函数库定义了某些UNIX版本中尚未标准化的函数,尤其是4.2 BSD,4.3 BSD,4.4 BSD UNIX系统(即Berkeley UNIX)以及SunOS(流行的4.2 BSD变种,其中包含某些UNIX System V的功能)。BSD函数包括符号连接、select函数、BSD号处理函数以及套接字等。

    (4) SVID(System V的接口描述)。GNU C函数库定义了大多数由SVID指定而未被ISO C和POSIX标准指定的函数。来自System V的支持函数包括进程间通信和共享内存、hsearch和drand48函数族、fmtmsg以及一些数学函数。

    (5)XPG(X/Open可移植性指南)。GNU C函数库遵循X/Open可移植性指南(Issue 4.2)以及所有的XSI(X/Open系统接口)兼容系统的扩展,同时也遵循所有的X/Open UNIX扩展。

    3.系统调用
    系统调用是操作系统提供给外部程序的接口。在C语言中,操作系统的系统调用一般通过函数调用的形式完成。因为这些函数封装了系统调用的细节,将系统调用的入口、参数以及返回值用C语言的函数调用过程实现。在Linux系统中,系统调用函数定义在glibc中。系统调用需要注意以下几点。

    (1)系统调用函数通常在成功时返回0值,不成功时返回非零值。如果要检查失败原因,则要判断全局变量errno的值,errno中包含错误代码。

    (2)许多系统调用的返回数据通常通过引用参数传递。这时,需要在函数参数中传递缓冲区地址,而返回的数据就保存在该缓冲区中。

    (3)不能认为系统调用函数比其他函数的执行效率高。因为系统调用是一个非常耗时的过程。

    1.2.3 在线文档介绍
    Linux是免费的自由软件操作系统,大量的应用程序都是由自由组织和个人编写,没有特别大型的公司维护。因此,在程序中出现的大量问题都需要程序开发人员自己解决。一般的解决方案是查看该程序的帮助文件,因为Linux开发人员在发布其个人程序时都添加了详细的帮助文件。在Linux系统下,常用的在线帮助文件有man、info以及HOW-TO等。最常用的是man手册。

    1.man手册
    man即manual,是UNIX系统手册的电子版本。根据习惯,UNIX系统手册通常分为不同的部分(或小节,即section),每个小节阐述不同的系统内容。目前的小节划分如下。

    man 1:命令,例如ls。可以查看shell终端下命令使用介绍。
    man 2:系统调用。可以查看内核系统调用函数的描述,以及参数和返回值情况。
    man 3:函数库调用。可以查看普通函数库中的函数。
    man 4:特殊文件。可以查看/dev目录中的特殊文件。
    man 5:文件格式和约定。可以查看/etc/passwd等文件的格式,例如man /etc/passwd。
    man 6:游戏。
    man 7:杂项和约定。标准文件系统布局、手册页结构等杂项内容。
    man 8:系统管理命令。只有管理员使用的命令。
    man 9:内核例程。非标准的手册小节,便于Linux内核的开发而包含其他手册小节。
    例如,常用命令行:

    man 2 open      //查看open函数帮助
    man 7 man      //在第7部分查看man功能
    

    2.info手册
    Linux中的大多数软件开发工具都来自自由软件基金会的GNU项目,这些工具软件的在线文档都以info文件的形式存在。info程序是GNU的超文本帮助系统。info文档一般保存在/usr/info目录下,使用info命令可以查看info文档。要运行“info”,可以在shell提示符后输入“info”,也可以在GNU的emacs中键入“Esc-x info”。

    info帮助系统的初始屏幕显示为一个主题目录,可以将光标移动到带有“*”的主题菜单上面,然后按回车键进入该主题,也可以键入“m主题菜单的名称”进入该主题。例如,你可以键入“m”,然后再键入“gcc”进入gcc主题中。如果要在主题之间跳转,则必须记住如下几个命令键。

    n:跳转到该节点的下一个节点。
    p:跳转到该节点的上一个节点。
    m:指定菜单名。
    f:进入交叉引用主题。
    l:进入该窗口中的最后一个节点。
    TAB:跳转到该窗口的下一个超文本链接。
    RET:进入光标处的超文本链接。
    u:转到上一级主题。
    d:回到info的初始节点目录。
    h:跳出info教程。
    q:退出info。
    3.HOW-TO
    可供用户参考的联机文档的另一种形式是HOWTO文件,这些文件位于系统的/usr/doc/HOWTO目录下。HOWTO文件的文件名都有-HOWTO后缀,并且都是文本文件。每一个HOWTO文件包含Linux某一方面的信息,例如支持硬件或如何建立引导盘。要想查看这些文件,进入/usr/doc/HOWTO目录,使用more命令,具体形式如下:

    $ cd /usr/doc/HOWTO;more topic-name-HOWTO //切换到该目录
    另外,还有其他格式的HOWTO文档,例如HTML和PS等,保存在/usr/doc/HOWTO/ other-formats下。

    4.其他
    Linux的内核文档一般包含在内核源代码目录/usr/src/'uname –r'/Documentation/usr/doc中,该目录下包含有大量与特定软件或函数库相关的说明性文档。

    1.2.4 获取错误信息
    调用库函数或系统调用函数后,如果执行成功将返回0或者正确值;如果执行失败,返回 − 1,并把系统全局变量errno赋值,以指示具体的错误情况。该变量在文件errno.h头文件中被声明,具体如下所示:

    #ifndef errno
    extern int errno;
    #endif
    

    所有的错误代码都在errno.h文件中定义。以下是/usr/include/asm/errno.h文件部分内容:

    come from /usr/include/asm/errno.h
    #ifndef _I386_ERRNO_H
    #define _I386_ERRNO_H
    #define EPERM    1 /* Operation not permitted */ //没有操作权限
    #define ENOENT    2 /* No such file or directory */ //文件和目录不存在
    #define ESRCH   3 /* No such process */   //没有此程序
    #define EINTR    4 /* Interrupted system call */ //系统调用中断
    #define EIO     5 /* I/O error */    //I/O错误
    ……
    

    为了打印出具体的errno值所对应的错误提示信息,一般使用perror函数。此函数声明如下:

    //come from /usr/include/stdio.h 
    //Print a message describing the meaning of the value of errno. //打印错误值的具体信息描述
    extern void perror (__const char *__s);      //perror函数声明
    

    另外,Linux系统还提供了以下错误处理函数:

    #include <string.h>          //string.h头文件中
        char *strerror(int errnum);        //strerror函数声明
    #include <errno.h>          //errno.h头文件中
        extern char *sys_errlist[ ];        //sys_errlist函数声明
        extern int sys_nerr;          //sys_nerr函数声明
    

    如果在应用程序中使用系统调用出错后使用perror(),可将错误相关的消息写入到标准错误输出,描述调用系统函数或库函数期间遇到的最后一个错误。perror()函数首先输出参数字符串s,后接冒号、空格、消息和换行符。为发挥它最大的作用,参数字符串应包括导致错误的程序的名称。如下示例所示:

    if (chmod("test02", (statbuf.st_mode & ~S_IXGRP) | S_ISGID) < 0) 
    {
         perror("stat");
        exit(EXIT_FAILURE);
    }
    

    如果上例的chmod()函数调用失败,将打印“stat: 具体的errno message”错误信息。

    错误编号取自符号errno,出错时将设置此符号,但执行无错误调用后不会清除此符号。消息的内容与将errno用作参数的strerror()函数返回的内容相同。如果给定了一个NULL字符串,则perror()函数只输出消息和换行符。

    展开全文
  • Linux程序设计(第4版)

    2019-07-16 22:00:00
    Linux程序设计(第4版) 编辑推荐 最负盛名的Linux程序设计图书 内容全面深入 全球开源社区集体智慧结晶 内容简介  本书讲述了Linux系统及其他UNIX风格的操作系统上的程序开发,主要...

    查看书籍详细信息:

    Linux程序设计(第4版)

    编辑推荐

    最负盛名的Linux程序设计图书
    内容全面深入
    全球开源社区集体智慧结晶

    内容简介

      本书讲述了Linux系统及其他UNIX风格的操作系统上的程序开发,主要内容包括标准Linux C语言函数库和由不同的Linux或UNIX标准指定的各种工具的使用方法,大多数标准Linux开发工具的使用方法,通过DBM和MySQL数据库系统存储Linux中的数据,为X视窗系统建立图形化用户界面等。本书通过先介绍程序设计理论,再以适当的例子和清晰的解释来阐明它的方式,帮助读者迅速掌握相关的知识。   本书适合Linux的初学者及希望利用Linux进行开发的程序人员阅读,也适合作为高等院校计算机相关专业师生的参考教材。

    作者简介

    Neil Matthew 和Richard Stones世界知名的Linux/UNIX专家,有数十年Linux/UNIX开发经验和从业经历。他们使用过几乎所有UNIX版本,并精通C/C++、LISP、Fortran、Perl、Tcl和Prolog等各种语言。他们从事过各种软件项目,从实时嵌入式系统到会计系统和零售信息系统。除本书外,他们还合著了PostgreSQL、MySQL方面的图书。

    目录

    目 录

    第1章 入门 1
    1.1 UNIX、Linux和GNU简介 1
    1.1.1 什么是UNIX 1
    1.1.2 什么是Linux 2
    1.1.3 GNU项目和自由软件基金会 3
    1.1.4 Linux发行版 3
    1.2 Linux程序设计 4
    1.2.1 Linux程序 4
    1.2.2 文本编辑器 5
    1.2.3 C语言编译器 5
    1.2.4 开发系统导引 7
    1.3 获得帮助 12
    1.4 小结 14

    第2章 shell程序设计 15
    2.1 为什么使用shell编程 15
    2.2 一点哲学 16
    2.3 什么是shell 16
    2.4 管道和重定向 18
    2.4.1 重定向输出 18
    2.4.2 重定向输入 19
    2.4.3 管道 19
    2.5 作为程序设计语言的shell 20
    2.5.1 交互式程序 20
    2.5.2 创建脚本 21
    2.5.3 把脚本设置为可执行 22
    2.6 shell的语法 23
    2.6.1 变量 23
    2.6.2 条件 27
    2.6.3 控制结构 29
    2.6.4 函数 39
    2.6.5 命令 42
    2.6.6 命令的执行 58
    2.6.7 here文档 61
    2.6.8 调试脚本程序 63
    2.7 迈向图形化:dialog工具 63
    2.8 综合应用 68
    2.8.1 需求 68
    2.8.2 设计 68
    2.8.3 应用程序的说明 76
    2.9 小结 77

    第3章 文件操作 78
    3.1 Linux文件结构 78
    3.1.1 目录 79
    3.1.2 文件和设备 79
    3.2 系统调用和设备驱动程序 80
    3.3 库函数 81
    3.4 底层文件访问 82
    3.4.1 write系统调用 82
    3.4.2 read系统调用 83
    3.4.3 open系统调用 84
    3.4.4 访问权限的初始值 85
    3.4.5 其他与文件管理有关的系统调用 88
    3.5 标准I/O库 91
    3.5.1 fopen函数 91
    3.5.2 fread函数 92
    3.5.3 fwrite函数 92
    3.5.4 fclose函数 92
    3.5.5 fflush函数 93
    3.5.6 fseek函数 93
    3.5.7 fgetc、getc和getchar函数 93
    3.5.8 fputc、putc和putchar函数 94
    3.5.9 fgets和gets函数 94
    3.6 格式化输入和输出 94
    3.6.1 printf、fprintf和sprintf函数 94
    3.6.2 scanf、fscanf和sscanf函数 96
    3.6.3 其他流函数 98
    3.6.4 文件流错误 99
    3.6.5 文件流和文件描述符 99
    3.7 文件和目录的维护 100
    3.7.1 chmod系统调用 100
    3.7.2 chown系统调用 100
    3.7.3 unlink、link和symlink系统调用 100
    3.7.4 mkdir和rmdir系统调用 101
    3.7.5 chdir系统调用和getcwd函数 101
    3.8 扫描目录 102
    3.8.1 opendir函数 102
    3.8.2 readdir函数 102
    3.8.3 telldir函数 103
    3.8.4 seekdir函数 103
    3.8.5 closedir函数 103
    3.9 错误处理 106
    3.9.1 strerror函数 106
    3.9.2 perror函数 106
    3.10 /proc文件系统 107
    3.11 高级主题:fcntl和mmap 110
    3.11.1 fcntl系统调用 110
    3.11.2 mmap函数 111
    3.12 小结 113

    第4章 Linux环境 114
    4.1 程序参数 114
    4.1.1 getopt 116
    4.1.2 getopt_long 118
    4.2 环境变量 120
    4.2.1 环境变量的用途 122
    4.2.2 environ变量 122
    4.3 时间和日期 123
    4.4 临时文件 129
    4.5 用户信息 131
    4.6 主机信息 134
    4.7 日志 135
    4.8 资源和限制 139
    4.9 小结 143

    第5章 终端 144
    5.1 对终端进行读写 144
    5.2 与终端进行对话 149
    5.3 终端驱动程序和通用终端接口 151
    5.3.1 概述 151
    5.3.2 硬件模型 151
    5.4 termios结构 152
    5.4.1 输入模式 153
    5.4.2 输出模式 154
    5.4.3 控制模式 155
    5.4.4 本地模式 155
    5.4.5 特殊控制字符 155
    5.4.6 终端速度 158
    5.4.7 其他函数 159
    5.5 终端的输出 162
    5.5.1 终端的类型 163
    5.5.2 识别终端类型 163
    5.5.3 使用terminfo功能标志 165
    5.6 检测击键动作 170
    5.7 虚拟控制台 172
    5.8 伪终端 173
    5.9 小结 174

    第6章 使用curses函数库管理基于文本的屏幕 175
    6.1 用curses函数库进行编译 175
    6.2 curses术语和概念 176
    6.3 屏幕 178
    6.3.1 输出到屏幕 179
    6.3.2 从屏幕读取 180
    6.3.3 清除屏幕 180
    6.3.4 移动光标 180
    6.3.5 字符属性 181
    6.4 键盘 183
    6.4.1 键盘模式 183
    6.4.2 键盘输入 184
    6.5 窗口 185
    6.5.1 WINDOW结构 185
    6.5.2 通用函数 186
    6.5.3 移动和更新窗口 187
    6.5.4 优化屏幕刷新 190
    6.6 子窗口 191
    6.7 keypad模式 193
    6.8 彩色显示 195
    6.9 pad 198
    6.10 CD唱片应用程序 200
    6.10.1 新CD唱片应用程序的开始部分 200
    6.10.2 main函数 202
    6.10.3 建立菜单 203
    6.10.4 操作数据库文件 204
    6.10.5 查询CD数据库 209
    6.11 小结 213

    第7章 数据管理 214
    7.1 内存管理 214
    7.1.1 简单的内存分配 214
    7.1.2 分配大量的内存 215
    7.1.3 滥用内存 218
    7.1.4 空指针 219
    7.1.5 释放内存 220
    7.1.6 其他内存分配函数 221
    7.2 文件锁定 222
    7.2.1 创建锁文件 222
    7.2.2 区域锁定 225
    7.2.3 锁定状态下的读写操作 227
    7.2.4 文件锁的竞争 232
    7.2.5 其他锁命令 236
    7.2.6 死锁 236
    7.3 数据库 237
    7.3.1 dbm数据库 237
    7.3.2 dbm例程 238
    7.3.3 dbm访问函数 239
    7.3.4 其他dbm函数 242
    7.4 CD唱片应用程序 244
    7.4.1 更新设计 244
    7.4.2 使用dbm数据库的CD唱片应用程序 245
    7.5 小结 262

    第8章 MySQL 263
    8.1 安装 263
    8.1.1 MySQL软件包 264
    8.1.2 安装后的配置 266
    8.1.3 安装后的故障修复 270
    8.2 MySQL管理 270
    8.2.1 命令 270
    8.2.2 创建用户并赋予权限 274
    8.2.3 密码 276
    8.2.4 创建数据库 276
    8.2.5 数据类型 277
    8.2.6 创建表 278
    8.2.7 图形化工具 280
    8.3 使用C语言访问MySQL数据 283
    8.3.1 连接例程 283
    8.3.2 错误处理 287
    8.3.3 执行SQL语句 288
    8.3.4 更多的函数 301
    8.4 CD数据库应用程序 301
    8.4.1 创建表 302
    8.4.2 添加数据 304
    8.4.3 使用C语言访问数据 306
    8.5 小结 316

    第9章 开发工具 317
    9.1 多个源文件带来的问题 317
    9.2 make命令和makefile文件 318
    9.2.1 makefile的语法 318
    9.2.2 make命令的选项和参数 318
    9.2.3 makefile文件中的注释 321
    9.2.4 makefile文件中的宏 321
    9.2.5 多个目标 323
    9.2.6 内置规则 325
    9.2.7 后缀和模式规则 326
    9.2.8 用make管理函数库 327
    9.2.9 高级主题:makefile文件和子目录 329
    9.2.10 GNU make和gcc 329
    9.3 源代码控制 330
    9.3.1 RCS 331
    9.3.2 SCCS 336
    9.3.3 RCS和SCCS的比较 336
    9.3.4 CVS 337
    9.3.5 CVS的前端程序 340
    9.3.6 Subversion 341
    9.4 编写手册页 342
    9.5 发行软件 345
    9.5.1 patch程序 345
    9.5.2 其他软件发行工具 347
    9.6 RPM软件包 349
    9.6.1 使用RPM软件包文件 349
    9.6.2 安装RPM软件包 350
    9.6.3 创建RPM软件包 350
    9.7 其他软件包格式 358
    9.8 开发环境 358
    9.8.1 KDevelop 358
    9.8.2 其他开发环境 360
    9.9 小结 360

    第10章 调试 361
    10.1 错误类型 361
    10.2 常用调试技巧 362
    10.2.1 有漏洞的程序 362
    10.2.2 代码检查 364
    10.2.3 取样法 365
    10.2.4 程序的受控执行 367
    10.3 使用gdb进行调试 368
    10.3.1 启动gdb 368
    10.3.2 运行一个程序 369
    10.3.3 栈跟踪 369
    10.3.4 检查变量 370
    10.3.5 列出程序源代码 370
    10.3.6 设置断点 371
    10.3.7 用调试器打补丁 374
    10.3.8 深入学习gdb 375
    10.4 其他调试工具 375
    10.4.1 lint:清理程序中的“垃圾” 376
    10.4.2 函数调用工具 378
    10.4.3 用prof/gprof产生执行存档 380
    10.5 断言 381
    10.6 内存调试 383
    10.6.1 ElectricFence函数库 383
    10.6.2 valgrind 384
    10.7 小结 387

    第11章 进程和信号 388
    11.1 什么是进程 388
    11.2 进程的结构 388
    11.2.1 进程表 390
    11.2.2 查看进程 390
    11.2.3 系统进程 391
    11.2.4 进程调度 393
    11.3 启动新进程 394
    11.3.1 等待一个进程 399
    11.3.2 僵尸进程 401
    11.3.3 输入和输出重定向 403
    11.3.4 线程 404
    11.4 信号 404
    11.4.1 发送信号 408
    11.4.2 信号集 412
    11.5 小结 415

    第12章 POSIX线程 416
    12.1 什么是线程 416
    12.2 线程的优点和缺点 417
    12.3 第一个线程程序 418
    12.4 同时执行 421
    12.5 同步 423
    12.5.1 用信号量进行同步 423
    12.5.2 用互斥量进行同步 427
    12.6 线程的属性 431
    12.7 取消一个线程 435
    12.8 多线程 438
    12.9 小结 442

    第13章 进程间通信:管道 443
    13.1 什么是管道 443
    13.2 进程管道 444
    13.3 将输出送往popen 445
    13.3.1 传递更多的数据 446
    13.3.2 如何实现popen 447
    13.4 pipe调用 449
    13.5 父进程和子进程 451
    13.5.1 管道关闭后的读操作 453
    13.5.2 把管道用作标准输入和标准输出 454
    13.6 命名管道:FIFO 456
    13.6.1 访问FIFO文件 458
    13.6.2 高级主题:使用FIFO的客户/服务器应用程序 464
    13.7 CD数据库应用程序 468
    13.7.1 目标 469
    13.7.2 实现 469
    13.7.3 客户接口函数 472
    13.7.4 服务器接口server.c 478
    13.7.5 管道 481
    13.7.6 对CD数据库应用程序的总结 487
    13.8 小结 487

    第14章 信号量、共享内存和消息队列 488
    14.1 信号量 488
    14.1.1 信号量的定义 489
    14.1.2 一个理论性的例子 489
    14.1.3 Linux的信号量机制 490
    14.1.4 使用信号量 492
    14.2 共享内存 496
    14.2.1 shmget函数 497
    14.2.2 shmat函数 497
    14.2.3 shmdt 498
    14.2.4 shmctl 498
    14.3 消息队列 502
    14.3.1 msgget函数 502
    14.3.2 msgsnd函数 503
    14.3.3 msgrcv函数 503
    14.3.4 msgctl函数 504
    14.4 CD数据库应用程序 507
    14.4.1 修改服务器函数 507
    14.4.2 修改客户函数 509
    14.5 IPC状态命令 511
    14.5.1 显示信号量状态 511
    14.5.2 显示共享内存状态 511
    14.5.3 显示消息队列状态 511
    14.6 小结 512

    第15章 套接字 513
    15.1 什么是套接字 513
    15.2 套接字连接 513
    15.2.1 套接字属性 517
    15.2.2 创建套接字 519
    15.2.3 套接字地址 520
    15.2.4 命名套接字 520
    15.2.5 创建套接字队列 521
    15.2.6 接受连接 521
    15.2.7 请求连接 522
    15.2.8 关闭套接字 523
    15.2.9 套接字通信 523
    15.2.10 主机字节序和网络字节序 525
    15.3 网络信息 527
    15.3.1 因特网守护进程(xinetd/inetd) 531
    15.3.2 套接字选项 533
    15.4 多客户 534
    15.4.1 select系统调用 537
    15.4.2 多客户 540
    15.5 数据报 543
    15.6 小结 545

    第16章 用GTK+进行GNOME编程 546
    16.1 X视窗系统简介 546
    16.1.1 X服务器 547
    16.1.2 X客户端 547
    16.1.3 X协议 547
    16.1.4 Xlib库 547
    16.1.5 X工具包 547
    16.1.6 窗口管理器 548
    16.1.7 创建GUI的其他方法——平台无关的窗囗API 548
    16.2 GTK+简介 549
    16.2.1 GLib类型系统 549
    16.2.2 GTK+对象系统 550
    16.2.3 GNOME简介 550
    16.2.4 安装GNOME/GTK+开发库 551
    16.3 事件、信号和回调函数 554
    16.4 组装盒构件 556
    16.5 GTK+构件 559
    16.5.1 GtkWindow 559
    16.5.2 GtkEntry 560
    16.5.3 GtkSpinButton 563
    16.5.4 GtkButton 565
    16.5.5 GtkTreeView 568
    16.6 GNOME构件 571
    16.7 GNOME菜单 572
    16.8 对话框 576
    16.8.1 GtkDialog 577
    16.8.2 模式对话框 578
    16.8.3 非模式对话框 579
    16.8.4 GtkMessageDialog 580
    16.9 CD数据库应用程序 581
    16.10 小结 592

    第17章 用Qt进行KDE编程 593
    17.1 KDE和Qt简介 593
    17.2 安装Qt 594
    17.3 信号和槽 596
    17.4 Qt构件 602
    17.4.1 QLineEdit 602
    17.4.2 Qt按钮 605
    17.4.3 QComboBox 609
    17.4.4 QListView 613
    17.5 对话框 615
    17.5.1 QDialog 615
    17.5.2 QMessageBox 617
    17.5.3 QInputDialog 618
    17.5.4 使用qmake简化makefile文件的编写 620
    17.6 KDE的菜单和工具栏 620
    17.7 使用KDE/Qt编写CD数据库应用程序 624
    17.7.1 主窗口 624
    17.7.2 AddCdDialog 627
    17.7.3 LogonDialog 629
    17.7.4 main.cpp 630
    17.8 小结 632

    第18章 Linux标准 633
    18.1 C编程语言 634
    18.1.1 发展历史简介 634
    18.1.2 GNU编译器集 634
    18.1.3 gcc选项 635
    18.2 接口和LSB 636
    18.2.1 LSB标准函数库 637
    18.2.2 LSB用户和组 638
    18.2.3 LSB系统初始化 638
    18.3 文件系统层次结构标准 639
    18.4 更多标准 642
    18.5 小结 642

    媒体评论

    “本书介绍了大量实际应用领域的基本概念和做法,它是程序员笔记的精华摘要,经过破译和编辑,并有机地组织在了一起。” ——Alan Cox,Linux内核维护者

    去天猫旗舰店查看商品详情:

    Linux程序设计(第4版)

    转载于:https://www.cnblogs.com/phpcode/archive/2013/05/20/3097853.html

    展开全文
  • Linux核心编程.pdf

    2020-07-26 13:40:45
    强烈建议Linux开发人员学习 Linux 核心编程 原著: David A Rusling 翻译: Banyan & fifa 目录 前言 3 第一章 硬件基础 5 1.1 CPU 6 1.2 内存 7 1.3 总线 7 1.4 控制器与外设 8 1.5 地址空间 8 1.6 时钟 8 第二章 ...
  • 《嵌入式Linux应用程序开发标准教程(第2版)》主要分为3个部分,包括Linux基础、搭建嵌入式Linux环境和嵌入式Linux的应用开发。Linux基础部分从Linux基础、基本操作命令讲起,为Linux初学者能快速入门提供了保证。...
  • 精通QT4编程(第二版)、Qt及Qt Quick开发实战精解、QT4高级编程(中文版)、Qt on Android核心编程_完整版 PDF电子书、Linux窗口程序设计--Qt4精彩实例分析
  • linux 嵌入式程序设计

    2010-03-01 12:27:00
    国内站点:电子设计信息网,尽管是个业界新秀,但潜力无量!这里能带给你无限精彩和希望!http://www.edires.net/华恒公司的主页,里面有很多的相关资料,有待大家去发现...
    
    

    嵌入式开发网站集锦!

    国内站点:

    电子设计信息网,尽管是个业界新秀,但潜力无量!这里能带给你无限精彩和希望!
    http://www.edires.net/
    华恒公司的主页,里面有很多的相关资料,有待大家去发现
    http://www.hhcn.com/chinese/embedlinux-res.html
    SkyEye嵌入式硬件仿真项目
    www.skyeye.org
    http://gro.clinux.org/projects/skyeye/
    公社的SkyEye项目专栏
    http://www.linuxfans.org/nuke/modul...=viewforum&f=58
    Pday水清木华,一个国内看嵌入式新闻的好地方!
    http://www.pday.com.cn/
    中国单片机公共实验室
    http://www.bol-system.com/
    中国Linux论坛的嵌入式版,有很多开发板原理图的资料
    http://openarm.linuxforum.net/
    嵌入开发网
    http://www.embed.com.cn/
    微芯力科技
    http://www.winsilicon.com
    驱动开发网之嵌入式版块,挺综合的一个网站
    http://www.driverdevelop.com/index.php

    国外站点

    Linux设备网站,由Rick Lehrbaum创建和维护,是一个嵌入式Linux入门网站,其中包含嵌入式Linux行业的每日新闻、完整系列的快速参考指南、由重要开发者撰写的大量文章,还包括一个交互论坛。
    http://www.linuxdevices.com/
    下载嵌入式Linux交叉编译工具链的好地方——SnapGear Embedded Linux Distribution Home Page
    http://www.snapgear.org/snapgear/index.html
    http://www.uclinux.org/pub/uClinux/...lf-tools/gcc-3/
    嵌入式Linux联盟(ELC),一个非盈利性的厂商中立的同业工会,其目标是在整个嵌入式、应用和设备市场中发展和推广Linux。
    www.embedded-linux.org
    Beyond Logic公司主页,提供了许多嵌入式Linux系统开发的资料。
    http://www.beyondlogic.org
    嵌入式Linux期刊(ELJ,Embedded Linux Journal),主要关注Linux和其他开源软件在嵌入式系统中的应用。 其中有很多业界领导者为ELJ撰写文章。
    embedded.linuxjournal.com
    有几本写嵌入式Linux系统的书
    http://www.embeddedlogic.com/ELSweb/booklinks.html
    有关PowerPC体系的嵌入式
    www.mvista.com
    www.denx.de/e/index1.php
    IXP4XX Open Source Developers Guide
    http://ixp4xx-osdg.sourceforge.net/
    uClinux/ARM项目
    http://adam.kaist.ac.kr/~hschoe/notice.html
    个人主页

    一个业余爱好者代礼周的个人主页,都是实践出来的
    http://www.lomx.net/index.htm
    D_J嵌入式个人主页,有很多资料!
    http://staff.ustc.edu.cn/~wangzhuo/index.html
    renbagshoes的个人主页,有些资料可能你会用的到!
    http://timity.nease.net

    嵌入式Linux操作系统
    小型化的嵌入式Linux版本
    uClinux —— 在没有 MMU 的系统上运行的 Linux。目前支持 Motorola 68K、MCF5206 和MCF5207 ColdFire 微处理器。
    http://www.uclinux.org/index.html
    Etlinux —— 设计用于在小型工业计算机,尤其是 PC/104 模块上运行的 Linux 的完全分发版
    http://www.prosa.it/etlinux/index.html
    Tiny Linux ── 可以运行在 386 上的 Linux 分发版。
    http://tiny.seul.org/en/
    ThinLinux ── 面向专用的照相机服务器、X-10 控制器、MP3 播放器和其它类似的嵌入式应用的最小化的 Linux 分发版。
    www.thinlinux.org
    LRP(Linux Route Project)
    http://www.linuxrouter.org
    Peeweelinux一个小的嵌入式Linux发行版
    http://freshmeat.net/projects/peeweelinux
    具有实时扩展功能的嵌入式Linux版本
    RT-Linux主页
    http://www.fsmlabs.com
    http://www.rtlinux.com
    RTAI
    http://www.rtai.org

    嵌入式GUI

    Microwindows 由Century Software的CEO Greg Haerr主持开发的一个公开源码(LGPL)的项目。Microwindows致力于为一些小型设备和平台提供现代图形窗口环境。 Microwindows支持许多硬件平台,移植性很强。Microwindows的主要目的之一便是运行在嵌入式Linux上,并且提供了基于 Win32/X的两套API接口。
    http://www.microwindows.org
    http://microwindows.org
    MiniGUI 由原清华大学教师魏永明先生开发,是中国人做的得较好的自由软件之一。MiniGUI 是一种面向嵌入式系统或者实时系统的公开源码(LGPL)的图形用户界面支持系统。它主要运行于Linux控制台,实际可以运行在任何一种具有POSIX 线程支持的POSIX兼容系统上。
    http://www.minigui.org
    飞漫软件的MiniGUI项目
    http://www.minigui.com/company/cindex.shtml
    Qt/Embedded 是著名的QT库开发商Trolltech正在进行的面向嵌入式系统的QT版本。Qt/Embedded对于各种硬件接口到 GUI工具包提供了完整的图形栈。Qt/Embedded的API同Qt/X11和Qt/Windows的相同,但它并不是基于X11库的。 Qt/Embedded是公开源码(LGPL)项目。
    http://www.trolltech.com
    OpenGUI基于一个用汇编实现的x86图形内核,提供了一个快速的、32位的、高层的C/C++图形接口。OpenGUI也是一个公开源码(LGPL)项目。OpenGUI提供了二维绘图原语,消息驱动的API和BMP文件格式支持。
    http://www.tutok.sk/fastgl
    PicoGUI 是一个可以工作在包括手持式设备等各种硬件上的小型的、可移植的、基于客户/服务器结构的GUI。同X Window系统一样,它具有客户—服务器结构的灵活性,但又不同于X Window系统,它将字体、BMP文件、控件以及一些应用程序所需要的其它的一些资源直接集成在服务器。虽然减少了系统的灵活性,但在速度上有了很大的 提高,并且减小了程序大小。
    http://picogui.org
    Tiny-X是一个为嵌入式系统而开发的紧缩型的X Window服务器。它由SuSE赞助,由XFree86的核心成员Keith Packard开发。Tiny-X的目标是可以在小内存或几乎无内存的情况下良好运行。
    http://www.pps.jussieu.fr/~jch/software/kdrive.html
    PIXIL提供嵌入式在高级因特网中应用程序的应用。它虽然是为商业化准备的,但它提供GPL协议下的版本,区别是没有技术支持。
    http://www.pixil.org
    NxZilla - Mozilla on NanoX
    http://nxzilla.sourceforge.net
    Simple DirectMedia Layer is a cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer. It is used by MPEG playback software, emulators, and many popular games, including the award winning Linux port of "Civilization: Call To Power."
    http://www.libsdl.org/index.php
    GtkFB: GTK+ for the Linux Framebuffer
    http://www.linuxdevices.com/articles/AT9024868021.html

    嵌入式Linux与Java

    Java 2 Micro Edition(J2ME官方站点)
    http://www.javasoft.com/j2me/
    waba为小设备提供一个编程平台。它被定义为一种语言,一个虚拟机,一个类文件格式以及功能类的设置。
    http://wabasoft.com/products.shtml
    Kaffe is a clean room implementation of the Java virtual machine, plus the associated class libraries needed to provide a Java runtime environment. The Kaffe virtual machine is free software, licensed under the terms of the GNU General Public License.Kaffe is a great choice as a base for virtual machine education and/or research, or if you need a virtual machine as an integral component of an open source or free software Java distribution.
    http://www.kaffe.org
    Wonka(一个java虚拟机,超小)
    http://www.acunia.com/wonka


    嵌入式综合性网站 http://www.eg3.com (英文)
    丰富的产品介绍、丰富的链接(嵌入式领域)。
    http://altair.ihep.su/~kulemzin/index.html (英文)
    为嵌入式开发人员提供大量的信息资源。
    http://www.embedded-directory.com (英文)
    嵌入式产品、工具介绍,包括硬件、软件、开发工具、开发服务商、测试设备、单板、处理器、信号处理器、分析仪等。
    http://www.siliconpenguin.com (英文)
    嵌入式Linux资源网站
    http://cs-www.bu.edu/pub/ieee-rts/Home.html (英文)
    IEEE计算机协会实时系统技术分会主页,提供该组织研究文档、实时系统研究组织名录以及书刊、杂志、产品的链接。
    http://www.es-mag.com (英文)
    欧洲关于嵌入式设计的杂志《EmbeddedSystems》网站
    http://www.esofta.com (英文)
    按处理器提供嵌入式产品、工具索引介绍。
    奔微实时操作系统--KarlOS微内核
    KarlOS 是一种小型且可靠的实时内核,特别是针对嵌入式系统而设计。内核自身能被非常灵活地修改到任一平台,因为它用于硬件抽象层(HAL)来隐藏任一硬件的特定功能,以至于可以协调内核的功能。同时KarlOS象一些传统的内核,用于平台抽象层(PAL)技术。
    http://www.embeddedtechnology.com (英文)
    包含大量的嵌入式产品、开发工具、产品提供商介绍。
    http://www.realtime-info.com (英文)
    实时系统综合性信息网站,《Real-Time Magazine》杂志主办者。提供实时操作系统及其它相关产品购买指导,实时技术研究组织机构介绍,业界新闻和重要活动消息发布,《Real-Time Magazine》杂志网上介绍。
    http://www.electronic-forecast.com (英文)
    提供嵌入式工业市场、产品研究信息,向用户提供产品购买指导。
    http://www.primenet.com/~magpub/ (英文)
    实时系统杂志网站,内容广泛。
    http://www.ifi.unizh.ch/groups/ailab/links/embedded.html (英文)
    提供大量的嵌入和实时系统链接资源。
    http://www.forthinc.demon.co.uk/info/links/index.htm (英文)
    提供丰富的嵌入式开发链接。
    http://www.embedded-systems-messe.de (英文)
    嵌入式产品展览会Internet发布网站。
    http://www.embeddedinternet.com (英文)
    嵌入式产品展览Internet发布。
    Windows CE下载区
    微软最新Windows CE.Net 4.1下载试用。
    http://www.embedded.com (英文)
    美国一家关于嵌入式系统的综合性网站,《EMBEDDED SYSTEMS》杂志主办者。提供嵌入式产品和工具购买指导,嵌入式产品Demo下载,业界新闻及各类活动报道,包含大量的资源链接和嵌入式开发文章,以及丰富的业界广告。

    嵌入式Linux 嵌入式LINUX硬件板卡供应商
    嵌入式LINUX硬件板卡供应商嵌入式LINUX开发套件供应商

    嵌入实时操作系统 http://linux-embedded.com/links.php3 (英文)
    提供嵌入式Linux链接
    http://www.cs.umd.edu/~fwmiller/etc/realtime/code.html (英文)
    实时软件概要

    嵌入论坛 白云黄鹤站
    白云黄鹤站嵌入版,国内较热闹的嵌入开发论坛,很值得拜访
    科大瀚海风云嵌入式论坛
    中国科技大学嵌入式论坛
    星运网络-----电子工程师论坛
    电子相关方面论坛,目前内容较少

    民间团体 嵌入式Linux
    主要是关于嵌入式Linux的内容
    北京 Linux 俱乐部
    主要是关于linux的内容
    清华AKA
    主要是关于linux的内容,有一些嵌入式系统的介绍
    操作系统开发者
    主要是关于linux的内容

    链接资源 可编程逻辑器件网站
    可编程逻辑器件网站致力于PLD/FPGA及VHDL技术在中国的推广。
    电子网站之家
    各地各类电子网站!电子网站大全!
    IPANEL 嵌入式浏览器网站
    详细介绍IPANEL嵌入式浏览器性能指标,用途等

    科研团体 中国单片机公共实验室
    内容主要集中在8位单片机,有一些值得一看的资料
    中科院计算所RTOS主页
    嵌入式系统软件研究组的主页,内容不多,但值得一看

    开发工具 http://www.idiom.com/free-compilers/ (英文)
    免费编译器目录
    http://www.delorie.com/gnu/docs/gcc/gcc_44.html (英文)
    介绍用GNU CC构造交叉编译器
    http://www.gnu.org (英文)
    GNU 自由软件组织

    个人主页 iMCU--网络单片机
    8月20日,全面改版,新版正式运行。目前尚有部分功能未完成。永久域名:http://imcu.126.com
    电子网站大全
    电子网站大全
    开放的ColdFire网站 (英文)
    完全开放原码,电路图的个人ColdFire网站。包括Free的TCPIP原码,uClinux和uCOS操作系统等等
    嵌入式系统及器件论坛
    内容少了点
    51单片机世界
    网站内容与网站名称描述相同,首页链接了大部分内容
    汉东单片机实验室
    关于单片机的个人网站中,是目前内容较丰富的一个
    嵌入式RTOS
    内容主要集中在嵌入式实时操作系统
    单片机家园
    一个单片机方面的个人网站。
    嵌入式Linux个人网站
    内容较少,仅一些文章和资源推荐!
    电子工程师园地
    有一些单片机和处理器的内容,主要是8051系列和X86系列,嵌入领域内容不多,内容有点杂
    嵌入系统
    主要内容包括MCS51/96系列和X86系列,BIOS的网络资源,简单的实时操作系统介绍,还有部分开发人员联合开发的实时操作系统介绍
    电子工程师
    内容主要集中在C51系列单片机
    美国一位大学副教授的个人主页 (英文)
    关于嵌入式处理器方面的个人工作项目介绍,有很多源码。

    单片机 电子世纪
    电子基础 mcu技术 mcu论坛 软件下载 数据手册 帮你开发 mcu解密 程序设计 校友挚友 招聘&人才 电子英语
    单片机技术网
    介绍单片机技术,开发和应用的专业网站,有众多应用文章,电子网站联接,产品项目介绍和部分产品网上销售等。内容包括单片机,工业控制,仪器仪表,信息家电,IC卡应用,防盗监控等

    处理器类 http://www.bdti.com (英文)
    提供大量DSP处理器信息。
    http://www.mdronline.com/events/epf99/ (英文)
    嵌入式处理器论坛。

    产品信息 闻亭公司DSP产品
    主要是dsp仿真器。
    奔微实时操作系统--KarlOS微内核
    KarlOS是一种小型且可靠的实时内核,特别是针对嵌入式系统而设计。内核自身能被非常灵活地修改到任一平台,因为它用于硬件抽象层(HAL)来隐藏任一硬件的特定功能,以至于可以协调内核的功能。同时KarlOS象一些传统的内核,用于平台抽象层(PAL)技术。
    北京灵思信息系统有限公司
    定位于嵌入式linux技术服务和提供解决方案的公司
    广州中杰嵌入式计算平台
    提供基于嵌入式硬件平台的产品级到系统级的完整解决方案,以满足用户嵌入式应用需求。

    测试工具 http://www.rstcorp.com/marick/faqs/tools.htm (英文)
    分类介绍各种测试工具产品。
    http://www.stqe.net (英文)
    软件测试资源网站。
    http://www.testingstuff.com (英文)
    一个介绍了大量测试工具的个人网站。
    http://www.methods-tools.com/tools/frames_testing.html (英文)
    提供大量的测试工具列表,包含简介与链接。


    1. The Linux Kernel Module Programming Guide
    http://www.dirac.org/linux/writing/lkmpg/2.6/lkmpg-2.6.0.html
    2. Linux Device Drivers, 3rd Edition
    By Jonathan Corbet, Greg Kroah-Hartman, Alessandro Rubini
    http://linuxdriver.co.il/ldd3/
    3. Writing Linux kernel modules
    http://www.staerk.de/thorsten/index.php/Writing_Linux_kernel_modules



    1. Building Embedded Linux System(英文)
    http://oss.lzu.edu.cn/modules/wfdownloads/visit.php?cid=6&lid=87

    2. 构建嵌入式Linux系统(中文)
    http://oss.lzu.edu.cn/modules/wfdownloads/visit.php?cid=6&lid=51

    转自:http://blog.chinaunix.net/u/21948/showart_354391.html

    一、门户网站

    1 ChinaUnix
    网址: http://www.chinaunix.net
    描述: C版块和shell版块很不错
    C/C++论坛:http://bbs.chinaunix.net/forumdisplay.php?fid=23
    shell论坛:http://bbs.chinaunix.net/forumdisplay.php?fid=24
    man文档:http://man.chinaunix.net

    2 中国Linux论坛
    网址: http://www.linuxforum.net/
    描述: 嵌入式Linux技术提高
    Linux嵌入技术:http://www.linuxforum.net/forum/postlist.php?Cat=&Board=embedded
    Linux内核技术:http://www.linuxforum.net/forum/postlist.php?Cat=&Board=linuxK
    Linux设备驱动程序:http://www.linuxforum.net/forum/postlist.php?Cat=&Board=driver
    C/C++编程版:http://www.linuxforum.net/forum/postlist.php?Cat=&Board=program

    3 The ARM Linux Project
    网址: http://www.arm.linux.org.uk/
    描述: Linux for all ARM based machine

    4 ARM官方网站
    网址: http://www.arm.com/
    描述: 提高ARM水平的最佳地方。文档和技术笔记均为英语,慢慢锻炼。
    Document:http://www.arm.com/documentation/
    Software:http://www.arm.com/community/software.php?PageTitle=Software&Categories=4&display=3

    5 The Linux Kernel Archives
    网址: http://www.kernel.org/
    描述: Linux Kernel官方网站

    6 IBM developerWorks
    网址: http://www-128.ibm.com/developerworks/cn/
    描述: 技术文档低中高级很丰富,作为系统学习的参考补充。

    7 SourceForge
    网址: http://sourceforge.net/
    描述: 开源软件的入口。
    U-boot:http://sourceforge.net/projects/uboot/

    8 Linux fans
    网址: http://www.linuxfans.org/nuke/index.php
    描述: 国内很出名的Linux站点,人气很高。

    二、技术博客

    1 陈莉君
    网址: http://www.lupaworld.com/26540
    http://www.kerneltravel.net/
    描述: 操作系统(Linux)研究。《深入理解Linux内核》的译者。kerneltravel里面关于kernel有很多精彩的文章,入门深入都可以在这里找到资料,可以讨论提高。

    2 飞翔,嵌入式Linux
    网址: http://blog.chinaunix.net/u/30686/index.html
    描述: 嵌入式Linux方向

    3 cnsLinux
    网址: http://blog.chinaunix.net/u/13329/index.php
    描述: Linux与程序设计

    4 todaygood
    网址: http://blog.chinaunix.net/u/24474/
    描述: 嵌入式Linux方向

    5 嵌入式Linux博客圈
    网址: http://blog.chinaunix.net/group/group_25.html
    描述: 我建立的嵌入式Linux方向的博客圈

    6 Richard Stevens
    网址: http://www.kohala.com/start/
    描述: Richard Stevens的个人主页。

    三、资料下载

    1 Free Datasheet PDF Download
    网址: http://www.ic-on-line.cn/
    描述: 硬件芯片Datasheet可以在此下载

    四、开发板厂商

    1 北京恒颐
    网址: http://www.hyesco.com/

    2 华恒科技
    网址: http://www.hhcn.com/chinese/cnindex.html

    3 广州联智
    网址: http://www.devicegate.com/

    4 周立功单片机
    网址: http://www.zlgmcu.com/home.asp

    五、开发工具

    1 GNU AS: Using AS---the GNU Assembler
    http://sourceware.org/binutils/docs-2.16/as/index.html#Top

    2 GNU LD: Using LD---the GNU Linker
    http://www.gnu.org/software/binutils/manual/ld-2.9.1/html_mono/ld.html

    3 GNU MAKE
    http://www.gnu.org/software/make/manual/make.html

    4 GNU GCC: Using the GNU Compiler Collection
    http://gcc.gnu.org/onlinedocs/gcc-4.2.1/gcc/

    5 GNU GDB: Debugging with GDB
    http://sourceware.org/gdb/current/onlinedocs/gdb_toc.html

    6 GNU CVS
    http://ximbiot.com/cvs/manual/

    7 VIM
    英文:http://vimdoc.sourceforge.net/htmldoc/usr_toc.html
    中文:http://vcd.gro.clinux.org/doc/usr_toc.html

    8 几本重要的书
    《Using and Porting the GNU Compiler Collection》
    http://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc.html
    《Linkers and Loaders》
    http://www.iecc.com/linker/

    9 交叉编译工具链
    http://www.codesourcery.com/gnu_toolchains/arm
    备注:CodeSourcery公司提供的GNU Tools交叉编译工具,性能优越。我现在使用的是arm-2007q1,编译了U-boot-1.2.0,并且成功移植到s3c2410(2007-09-19)

    六、程序设计

    1 《The Art of UNIX Programming》
    http://www.faqs.org/docs/artu/

    2 《UNIX Programming FAQ》(中文版)
    http://www.linuxforum.net/books/upfaq/book1.htm

    PS: 这是从super兄(实际上只发过一次邮件交流过哦)的博客上摘录的,他的博客地址是(http://blog.chinaunix.net/u/21948/ ),主要是嵌入式方面的日志。记得刚上CU的时候因为找嵌入式方面的资源,跑到他的博客上,发现他也在学嵌入式,不过到现在他长进很大,可我还只是学了毛皮。回想起来,可能是这段时间东学学、西弄弄,没有一个主线,所以得静下心来好好学习和研究啦。


    1. HOWTO BUILD A CROSS COMPILER WITH EMERGE !(gentoo)

    http://dev.gentoo.org/~vapier/CROSS-COMPILE-HOWTO

    2. Very Simple Guide for Building Cross Compilers Tips(Recommend)

    http://www.ifp.uiuc.edu/~nakazato/tips/xgcc.html

    3.cross compiler mini howto

    http://linux.bytesex.org/cross-compiler.html

    4. How to build a cross compiler for Linux/MIPS

    http://www.village.org/villagers/imp/build.html

    5. Building a cross-compiler

    http://www.nongnu.org/thug/cross.html

    6. Cross Compiling Gcc for PowerPC(like 2)

    http://www.pages.drexel.edu/~sg64/stuff/cross-compile.htm

    7. ARM cross-compiling howto(Recommend)

    http://www.ailis.de/~k/archives/19-ARM-cross-compiling-howto.html

    8. Building and Testing gcc/glibc cross toolchains

    http://www.kegel.com/crosstool/

    9. Building the x86_64 cross-compiling toolchain(Recommend)

    http://home.ix.netcom.com/~ejohns/glfs-amd64/toolchain.html

    10. Building a GCC Cross Compiler for the PowerPC

    http://www.cs.duke.edu/~irwin/gcc_ppc.html

    11. The PARISC-Linux Cross Compiler How TO

    http://www.parisc-linux.org/toolchain/PA-Linux-XC-HOWTO-01.html

    12. Cross compiling a 64-bit PowerPC Linux Kernel

    http://wiki.ppckernel.org/w/Cross_compiling_a_64-bit_PowerPC_Linux_Kernel

    13. x86 -> Alpha Cross Compiler HOWTO(Recommend)

    http://www.cse.unsw.edu.au/~cgray/crossdev/x86-alpha-xcc.html

    14. HOWTO Cross Compile(gentoo)

    http://gentoo-wiki.com/HOWTO_Cross_Compile

    15. Building a GNU/Linux ARM Toolchain (from scratch)

    http://www.schnozzle.org/~coldwell/toolchain/



    [转帖] 嵌入式Linux驱动程序开发要点

    转自:一塌糊涂的BLOG

    在Linux操作系统下有3类主要的设备文件类型:块设备、字符设备和网络设备。这种分类方法可以将控制输入/输出设备的驱动程序与其他操作系统软件分离开来。
    字 符设备与块设备的主要区别是:在对字符设备发出读/写请求时,实际的硬件I/O一般紧接着发生。块设备则不然,它利用一块系统内存作为缓冲区,若用户进程 对设备的请求能满足用户的要求,就返回请求的数据;否则,就调用请求函数来进行实际的I/O操作。块设备主要是针对磁盘等慢速设备设计的,以免耗费过多的 CPU时间用来等待。网络设备可以通过BSD套接口访问数据。
    每个设备文件都有其文件属性(c/b),表示是字符设备还是块设备。另外每个文件都 有2个设备号,第一个是主设备号,标识驱动程序;第二个是从设备号,标识使用同一个设备驱动程序的、不同的硬件设备。设备文件的主设备号必须与设备驱动程 序在登记时申请的主设备号一致,否则用户进程将无法访问驱动程序。

    系统调用时操作系统内核与应用程序之间的接口,设备驱动程序是操作系统内核与机器硬件之间的接口。设备驱动程序是内核的一部分,它完成以下功能:
    ●对设备初始化和释放
    ●把数据从内核传送到硬件和从硬件读取数据
    ●读取应用程序传送给设备文件的数据和回送应用程序请求的数据
    ●检测和处理设备出现的错误

    MTD(Memory Technology Device)设备是闪存芯片、小型闪存卡、记忆棒之类的设备,它们在嵌入式设备中的使用正在不断增加。MTD驱动程序是在Linux下专门为嵌入式环境 开发的新的一类驱动程序。相对于常规块设备驱动程序,使用MTD驱动程序的优点在于他们能更好的支持、管理给予闪存设备,有基于扇区的擦除和读/写操作的 更好的接口。

    驱动程序结构
    Linux的设备驱动程序可以分为3个主要组成部分:
    1. 自动配置和初始化子程序,负责监测所要驱动的硬件设备是否存在和能否正常工作。如果该设备正常,则对这个设备及其相关的设备驱动程序需要的软件状态进行初始化。这部分驱动程序仅在初始化时被调用一次。
    2. 服务于I/O请求的子程序,又称为驱动程序的上半部分。调用这部分程序是由于系统调用的结果。这部分程序在执行时,系统仍认为是与进行调用的进程属于同一 个进程,只是由用户态变成了核心态,具有进行此系统调用的用户程序的运行环境,因而可以在其中调用sleep()等与进行运行环境有关的函数。
    3. 中断服务子程序,又称为驱动程序的下半部分。在Linux系统中,并不是直接从中断向量表中调用设备驱动程序的中断服务子程序,而是由Linux系统来接 收硬件中断,再由系统调用中断服务子程序。中断可以在任何一个进程运行时产生,因而在中断服务程序被调用时,不能依赖于任何进程的状态,也就不能调用任何 与进程运行环境有关的函数。因为设备驱动程序一般支持同一类型的若干设备,所以一般在系统调用中断服务子程序时,都带有一个或多个参数,以唯一标识请求服 务的设备。

    在系统内部,I/O设备的存/取通过一组固定的入口点来进行,这组入口点是由每个设备的驱动程序提供的。具体到Linux系统,设备驱动程序所提供的这组入口点由一个文件操作结构来向系统进行说明。file_operation结构定义于linux/fs.h文件中。

    struct file_operation{
    int (*lseek)(struct inode *inode, struct file *filp, off_t off, int pos);
    int (*read)(struct inode *inode, struct file *filp, char *buf, int count);
    int (*write)(struct inode *inode, struct file *filp, const char *buf, int count);
    int (*readdir)(struct inode *inode, struct file *filp, struct dirent *dirent, int count);
    int (*select)(struct inode *inode, struct file *filp, int sel_type, select_table *wait);
    int (*ioctl)(struct inode *inode, struct file *filp, unsigned int cmd, unsigned int arg);
    int (*mmap)(void);
    int (*open)(struct inode *inode, struct file *filp);
    int (*release)(struct inode *inode, struct file *filp);
    int (*fasync)(struct inode *inode, struct file *filp);
    };

    file_operation结构中的成员几乎全部是函数指针,所以实质上就是函数跳转表。每个进程对设备的操作都会根据major、minor设备号,转换成对file_operation结构的访问。
    常用的操作包括以下几种:
    ●lseek, 移动文件指针的位置,只能用于可以随机存取的设备。
    ●read, 进行读操作,参数buf为存放读取结果的缓冲区,count为所要读取的数据长度。返回值为负表示读取操作发生错误;否则,返回实际读取的字节数。对于字符型,要求读取的字节数和返回的实际读取字节数都必须是inode-i_blksize的倍数。
    ●write, 进行写操作,与read类似
    ●readdir, 取得下一个目录入口点,只有与文件系统相关的设备程序才使用。
    ●select, 进行选择操作。如果驱动程序没有提供select入口,select操作会认为设备已经准备好进行任何I/O操作。
    ●ioctl, 进行读、写以外的其他操作,参数cmd为自定义的命令
    ●mmap, 用于把设备的内容映射到地址空间,一般只有块设备驱动程序使用
    ●open, 打开设备准备进行I/O操作。返回0表示打开成功,返回负数表示失败。如果驱动程序没有提供open入口,则只要/dev/driver文件存在就认为打开成功。
    ●release, 即close操作。
    在 用户自己的驱动程序中,首先要根据驱动程序的功能,完成file_operation结构中函数实现。不需要的函数接口可以直接在 file_operation结构中初始化为NULL。file_operation变量会在驱动程序初始化时注册到系统内部。当操作系统对设备操作时, 会调用驱动程序注册的file_operation结构中的函数指针。
    Linux对中断的处理

    在Linux系统里,对中断的处理是属于系统核心部分,因而如果设别与系统之间以中断方式进行数据交换,就必须把该设备的驱动程序作为系统核心的一部分。设备驱动程序通过调用request_irq函数来申请中断,通过free_irq来释放中断。它们被定义为:
    #i nclude <linux/sched.h>
    int request_irq(unsigned int irq,
    void (*handler)(int irq, void dev_id, struct pt_regs *regs),
    unsigned long flags,
    const char *device,
    void *dev_id);
    void free_irq(unsigned int irq, void *dev_id);
    参 数irq表示所要申请的硬件中断号;handler为向系统登记的中断处理子程序,中断产生时由系统来调用,调用时所带参数irq为中断号;dev_id 为申请时告诉系统的设备标识;regs为中断发生时的寄存器内容;device为设备名,将会出现在/proc/interrupts文件里;flag是 申请时的选项,它决定中断处理程序的一些特性,其中最重要的是中断处理程序是快速处理程序还是慢速处理程序。快速处理程序运行时,所有中断都被屏蔽,而慢 速处理程序运行时,除了正在处理的中断外,其他中断都没有被屏蔽。在Linux系统中,中断可以被不同的中断处理程序共享。

    作为系统核心的一部分,设备驱动程序在申请和释放内存时不是调用malloc和free,而代之以调用kmalloc和kfree,它们被定义为:
    #i nclude <linux/kernel.h>
    void *kmalloc(unsigned int len, int priority);
    void kfree(void *obj);
    参数len为希望申请的字节数;obj为要释放的内存指针;priority为分配内存操作的优先级,即在没有足够空闲内存时如何操作,一般用GFP_KERNEL。

    展开全文
  • 本文主要是通过一本书来大致了解Qt开发的框架,不对具体内容做详细分析。 1.首先弄清楚概念:定义-&...第一部分 Linux基础知识第二部分 Qt程序基础第5章 OtCreator下载与安装5.1 QtCreator下载5.1.1 使用软件中心下...

    本文主要是通过一本书来大致了解Qt开发的框架,不对具体内容做详细分析。

    1.首先弄清楚概念:定义->以自己的话理解是什么-> 实现的是什么功能->用在哪些地方

    2.前面认识到的知识点的特点-> 代码实现-> 工程代码分析

    第一部分 Linux基础知识
    第二部分 Qt程序基础
    第5章 OtCreator下载与安装
    5.1 QtCreator下载
    5.1.1 使用软件中心下载QtCreator
    5.1.2 访问Qt网站下载相关资源
    5.2 第一个Qt程序
    5.3 QtCreator介绍
    5.3.1 QtCreator界面介绍
    5.3.2 编译、调试、发布设置
    5.4 QtDesigner介绍
    第6章 Qt基础
    6.1 Qt概述与特性
    6.1.1 Qt简介
    6.1.2 Qt特性

    Qt SDK包括:Qt库、Qt Creator IDE、 Qt工具:Qt Designer、Qt Linguist(消除国际化流程障碍)、Qt Assistant.

    6.2 Qt与Xll的关系
    6.2.1 什么是X11
    6.2.2 Qt与Xl1
    6.3 Qt与KDE的关系
    6.3.1 KDE简介
    6.3.2 Qt与KDE
    6.4 Qt库和组件

    Qt SDK中主要包括类库、开发工具、平台相关支持、授权许可等。

    其中类库包含了Qt的所有对外发布的功能组件:

    1)Core: Qt4的基本模块,定义了其他模块使用的Qt核心的非 GUI类,所有其他模块都依赖于该模块。

    2)GUI: 定义了图形用户界面类

    3)WebKit:提供了一个在Qt中使用Web Browser的渲染与解析引擎。

    4)Graphic View:提供的是一种 Qt  Model-View编程模式,既可以管理大数量的定制2D graphical items,又可以与它们交互,由于一个视图窗口可以把这些项绘制出来,并支持旋转与缩放。

    5)Scripting: 提供了对脚本(如:Java、Python、Perl、Ruby)的支持。

    6) OpenGL

    7)XML: 定义了处理XML(eXtensible Markup Language)语言的类。

    8)Multimedia: 提供了播放媒体源的功能。

    9)Database: 提供了与平台和数据库种类无关的SQL访问接口。

    10)Network: 定义了Qt的网络编程类。

    11)Unit Test:定义了对Qt应用程序和库进行单元测试的类。

    6.4.1 QtSDK简介
    6.4.2 Qt主要组件介绍

    就现在在座的项目应该关注多媒体类的应用。


    第7章 Qt编程方法
    7.1 Qt应用程序的基本结构
    7.1.1 Qt工程文件

    以标签选项的结构进行组织的

    常用标签项:

    TEMPLATE/SOURCES/HEADERS/FORMS/TARGET/DESTDIR/INCLUDEPATH/DEPENDPATH/CONFIG等

    针对不同需求建立Makefile;

    指定可执行应用程序名称;

    声明引用的Qt拓展模块;

    指定编译器所要使用的选项和所需链接的库;

    所有头文件和源文件列表;

    所有的.ui文件列表;

    ......

    思考:工程文件中对应的标签项默认值都是什么?

     

    7.1.2 头文件和源文件
    7.1.3 元对象文件

    元对象系统这样工作:

    ●  Q_OBJECT宏声明一些内省函数(metaObject(),TR(),qt_matacall()和少量其他的函数)。这些函数必须在所有的QObject的子类中被实现。

    ●  Qt的moc工具负责执行被Q_OBJECT宏声明的函数,同时负责执行所有的信号函数。

    ●  QObject的成员函数,例如connect()和disconnect(),使用内省函数来工作。

    元对象系统基于以下三类:

    1)、QOBJECT类;

    2)、类声明中的私有段的Q_OBJECT宏;

    3)、元对象编译器。

          Moc读取C++源文件。如果它发现其中包含一个或多个类的声明中含有Q_OBJECT宏,它就会给含有Q_OBJECT宏的类生成另一个含有元对象代码的C++源文件。这个生成的源文件可以被类的源文件包含(#include)到或者和这个类的实现一起编译和连接。

          除了提供对象间通讯的信号和槽机制之外(这也是介绍这个系统的主要原因),QObject中的元对象代码也实现其它特征:

     1)、className()函数在运行的时候以字符串返回类的名称,不需要C++编译器中的运行时刻类型识别(RTTI)的支持。

     2)、inherits()函数返回这个对象是否是一个继承于QObject继承树中一个特定类的类的实例。

     3)、tr()和trUtf8()两个函数是用于国际化的字符串翻译。

     4)、setPorperty()和property()两个函数是用来通过名称动态设置和获得对象属性的。

     5)、metaObject()函数返回这个类所关联的元对象。

          虽然使用QObject作为一个基类而不使用Q_OBJECT宏和元对象代码是可以的,但是如果Q_OBJECT宏没有被使用,那么这里的信号和槽以及其它特征描述都不会被提供。根据元对象系统的观点,一个没有元代码的QObject的子类和它含有元对象代码的最近的祖先相同。举例来说就是,className()将不会返回你的类的实际名称,返回的是它的这个祖先的名称。我们强烈建议QObject的所有子类使用Q_OBJECT宏,而不管它们是否实际使用了信号、槽和属性。

    关于moc以及元对象个人理解:

      是实现C++程序拓展的自动完善代码的机制。

    7.2 程序资源与管理
    7.2.1 界面交互文件(.ui)
    7.2.2 程序资源文件(.qrc)

    应用程序使用到的所有附加资源,如图片、国际化翻译文件之类的资源。

    7.3 应用程序的创建
    7.3.1 创建GUI程序
    7.3.2 创建库工程

    类似于动态库

    7.3.3 创建console程序

    第8章 信号与槽
    8.1 概述
    8.1.1 信号
    8.1.2 槽
    8.2 信号与槽的关联
    8.2.1 单信号与槽的实例
    8.2.2 多信号与槽的实例
    8.3 元对象工具
    8.4 应注意的问题
    第9章 Qt事件
    9.1 Qt事件机制
    9.1.1 什么是Qt事件

    Qt事件(也可自定义Qt事件)

    异步处理事件:

    1)原生事件(SPontaneous)

    2)转发事件(Posted)

    同步处理事件:

    3)发送事件(sent)

    常见Qt事件

     

    其他一些非常见的Qt事件,比如socket、剪切板事件、字体改变、布局改变等。

    9.1.2 Qt事件的响应

    对应有事件处理函数

    9.1.3 自定义Qt事件

    包括定义、事件注册、实现自定义事件响应函数


    9.2 Qt事件的过滤

    让一个对象监听另外一个对象所接收到的事件。

    9.2.1 Qt事件的派发
    9.2.2 安装事件过滤器

    过滤器?


    9.3 Qt事件的截获

    提供了获取操作系统底层的事件的方法


    9.3.1 截获win32窗口消息

    举一个例子:可以使程序接收到一个来自其他进程发送来的窗口消息后,在其列表控件中添加此消息中所附带的文本信息。


    9.3.2 截获xll窗口事件


    9.4 Qt按键事件实例

     

    第10章 MVC模型/视图

    Model-View-Controller(MVC)是一种设计模式,常用来构建用户界面。MVC把交互系统的组成分解成模型(Model)、视图(View)、控制(Controller)三个部件。

    10.1 Qt的Model/View架构

     

     

    10.2 Qt中Model/View相关类

     

    10.3 典型实例

    10.3.1 QcolumnView类

    列视图模型

    10.3.2 QlistView类

    列表视图模型,可以设置列表的效果:列表底色、列表项是否可编辑

    10.3.3 QTableView类

    表格视图模型

    10.3.4 QtreeView类

    树形视图模型

     

    第三部分 Qt界面设计

    第11章 Qt常用控件

    11.1 按钮控件

    11.1.1 QPushButton类

    11.1.2 QButtonGroup类和QRadioButton类

    QButtonGroup类将多个QButton窗口控件组合在一起。它是一组按钮的父窗口控件,也就是说它是按钮构造函数中的parent参数。

    QRadioButton类则是单选按钮控件,一般与QButtonGroup类结合使用来控制组群的唯一性。

    11.2 文本类控件

    11.2.1 QLineEdit类

    单行文本输入框

    11.2.2 QTextEdit类

    单页面多信息文本编辑器:提供了三种文本操作模式:一般文本编辑器、多信息文本编辑器和文本查看器。

    11.3 时间类控件

    11.3.1 QTime类和QTimeEdit类

    QTime类:提供了时钟的时间功能,通常由给定的时、分、钟和毫秒来创建,也可以通过读取当前时间来创建,还可以通过给定字符串来创建。

    QTimeEdit类:时钟显示控件。

    11.3.2 QDate类和QDataEdit类

    QDate类提供了日期功能。

    QDataEdit类是一个日期显示控件。

    11.3.3 QCalendarWidget类

    QCalendarWidget类提供了一个日历控件,它允许用户简单直观地选择日期。

    11.4其他控件

    11.4.1 QCombox类

    下拉列表框控件,它为用户提供了一组可以选择的下拉列表。

    11.4.2 QLCDNumber类

    LCD显示控件,用于显示数字。

    11.4.3 QProgressBar类

    横或者竖着的进度条控件,用于显示目前的工作进度(文件复制、文件下载、程序安装等)。

    11.4.4 QSpinBox类和QDoubleSpinBox类

    都是微调控件,QSpinBox类常用来手动设置整数和一些其他数据的集合,而QDoubleSpinBox类常用来设置浮点数。

    11.4.5 QSlider类

    QSlider类是一个横或者竖着滑动条控件,该类通过滑块控制一个绑定变量的值。

    11.4.6 QTreeWidget类

    一种树形的部件。

    11.4.7 QTabWidget类

    一个Tab导航页的窗口部件。

    第12章 布局管理

    为了放置控件部件尽可能节省空间,且美观,而出现了布局管理器。

    12.1 Qt布局管理介绍

    绝对位置法

    人工位置法

    布局管理器方式

    前两种都是通过调用setGeometry()函数来设置子窗口部件在父窗口中显示的位置和大小。

    12.2 布局管理器

    布局管理器负责在父窗口部件区域内存放子窗口部件。布局管理器可以使其中的窗口部件自动定位并重新调整他们的位置和大小。

    12.2.1 QHBoxLayout

    按水平方向存放窗口部件

    12.2.2 QVBoxLayout

    按垂直方向存放窗口部件

    12.2.3 QGridLayout

    按二维网格方式存放窗口部件

    12.2.4 QFormLayout

    按表单形式存放窗口部件

    12.2.5 QStackedLayout

    按类似栈方式存放窗口部件

    12.3 综合实例

    第13章 对话框

    13.1 QDialog类

    是所有对话框类的基类。继承于QWidget类。对话框窗口分为模式、非模式和半模式三种类型,主要用于短期任务及用户进行交互。

    13.2 子类化QDialog类

    什么叫子类化?

    13.3 常用标准对话框

    Qt提供了一整套内置窗口部件和常用对话框,下面是其中几种。

    13.3.1 QColorDialog类

    一个指定颜色对话框的窗口部件,该窗口部件允许用户为某一对象指定颜色,比如选择画刷的颜色

    13.3.2 QFileDialog类

    一个选择文件或者目录的对话框窗口部件。

    13.3.3 QFontDialog类

    一个选择字体的对话框窗口部件,该窗口部件允许用户设置字体的样式。

    13.3.4 QMessageBox类

    按需弹出消息框给用户各种各样的提示。

    13.3.5 QProgressDialog类 

    一个慢动作(复制文件、安装应用程序等)的进度反馈窗口部件。

     

    第14章 QMainWindow主窗口应用程序

    14.1 简介

    14.2 菜单栏、工具栏与状态栏

    14.2.1 菜单栏

    14.2.2 工具栏

    14.2.3 状态栏

    14.3 工作区

    14.4 滚动视图与锚接窗口

    14.4.1 滚动视图

    针对需要编辑的文本过多的情况下,添加一个滚动条。

    14.4.2 锚接窗口

    锚接窗口是可以锚接到锚接区域中的窗口。工具栏就是最常见的实例。

    14.5 完整代码

     

    第四部分 进阶应用

    第15章 Qt容器类 (个人理解这章是为了提升编程的高效性,程序的健壮性)

    用在那些地方?怎么使用?

    容器是指容纳特定类型对象的集合,是将最常用的一些数据结构实现出来。

    容器分为序列式和关联式两种。

    标准模板库(STL)包含大多数的经典数据结构。

    15.1 通用顺序容器

    QVector<T>:Qt提供的,通过在连续内存中顺序存储各元素来提高访问效率。

    理解一下使用容器实现的冒泡排序。

    15.2 迭代器

    迭代器工作在用户与容器之间,规范和简化元素的存取访问的一组对象。

    15.2.1 Java风格迭代器

    15.2.2 STL风格迭代器

    15.2.3 STL风格迭代器与通用算法

    15.2.4 综合应用

    15.3 通用链式容器

    15.3.1 类摘要

    15.3.2 常用操作函数

    15.3.3 访问元素

    15.4 关联容器

    15.4.1 类摘要

    15.4.2 常用操作函数

    15.4.3 访问元素

    第16章 文件操作

    16.1 QFile类

    一个操作文件的输入输出设备,用来读写二进制文件和文本文件的。

    16.1.1 读写二进制流文件

    16.1.2 读写文本

    16.2 目录操作

    16.3 文件管理

    16.3.1 获取文件属性

    16.3.2 监视文件系统变化

    16.4 XML文件操作

    XML(Extensible Markup Language,可拓展标记语言)是一种简单的、广泛应用于数据交换和数据存储的语言。Qt提供了QXML模块来支持对XML数据的处理。

    16.4.1 读取XML文件

    16.4.2 写入XML文件

    第17章 Qt多线程

    GUI应用程序经常使用多个线程:一个线程保持用户界面的相应,其他线程执行耗时冗长的活动,例如读取大型文件并执行复杂的计算。

    配置Qt并提供类来表示线程、互斥锁、信号灯、线程全局存储。

    Qt提供对线程支持的3种形式:

    1)平台无关的线程类

    2)线程安全的事件投递

    3)跨线程的信号-槽连接、

    一些线程相关的类:

     

    17.1 在Qt中创建一个线程

    17.2 Qt的同步控制

    互斥体(QMutex)、读写锁(QReadWriteLock)、信号量(QSemaphore)和条件变量(QWaitCondition)

    17.2.1 QMutex类

    17.2.2 QReadWriteLock类

    17.2.3 QSemaphore类

    17.2.4 QWaitCondition

    17.3 使用线程池

    使用线程池QThreadPool管理和回收QThread创建的线程对象,从而减少由于线程创建和销毁所带来的资源开销。

    每一个Qt应用程序都有一个全局的QThreadPool对象,可以通过函数globalInstance()调用该线程池全局对象。

    第18章 Qt数据库编程

    18.1 Qt数据库开发基础

    18.2 连接数据库

    18.2.1 MySQL数据库连接

    18.2.2 SQLite数据库连接

    18.3 数据库基本操作

    18.3.1 添加

    18.3.2 浏览查询

    18.3.3 删除

    18.3.4 修改

    18.4 SQLite数据库实例

    18.4.1 界面设计

    18.4.2 创建绑定数据库

    18.4.3 主函数与程序主界面

    18.4.4 数据库操作

    第19章 Qt网络编程

    主要内容包括:使用QHostInfo获取主机的网络信息:使用UDP和TCP两种方式进行聊天;使用QTcpSocket与其他应用程序通过Socket端口进行通信;实现HTTP协议下载;以及建立一个FTP协议客户端。

    19.1 获取主机网络信息

    19.2 基于UDP和TCP的聊天室

    19.2.1 基于UDP的聊天功能

    19.2.2 基于TCP的文件传输

    19.3 基于Socket的Qt与Flex通信

    19.4 HTTP文件下载

    19.5 FTP客户端

    第20章 Qt绘图

    Qt支持2D和3D.Qt的2D图形类支持点阵图形和向量图形,可以加载并保存各种图形格式,并将文本和图形导出为Portable Document Format文件(PDF)。

    Qt实际上是与平台无关的OpenGL编程的一个标准GUI框架。

    20.1 QPainter绘图

    20.1.1 QPen类

    绘制线

    20.1.2 QBrush类

    对封闭图形和绘图设备背景填充着色

    20.1.3 QFont类

    文字的绘制

    20.2 渐变填充绘图

    20.3 绘图与绘图设备

    绘图设备是指继承QPainterDevice的子类

    20.4 坐标系统与坐标变换

    20.4.1 坐标系统

    20.4.2 坐标系变换

    20.4.3 坐标系状态的保存与恢复

     

    转载于:https://www.cnblogs.com/kwseeker-bolgs/p/4535408.html

    展开全文
  • linux基础教程-黑马程序员汇总PDF 目标 明确基础班课程内容 课程清单 序号 内容 目标 01 Linux 基础 让大家对 Ubuntu 的使用从很 陌生 达到 灵活操作 02 Python 基础 涵盖 Python 基础知识,让大家掌握基础的编程...
  • 再说一遍,完全免费!...第一部分 Linux的规则与安装 第0章 计算机概论 2 0.1 电脑:辅助人脑的好工具 3 0.1.1 电脑硬件的五大单元 3 0.1.2 一切设计的起点:CPU的架构 5 0.1.3 其他单元的设备 6 0.1...
  • 一、X视窗系统简介  1、
  • 上次发了一个Qt入门中文资料,反响很不错!但毕竟上次的资源是我从网上搜集的,各个方面都不是很...Linux窗口程序设计-Qt4精彩实例分析 Linux窗口程序设计-Qt4精彩实例分析 part01:http://d.download.csdn.net/do
  • 本节书摘来华章计算机《交互式程序设计 第2版》一书中的第3章 ,第3.1节,Joshua Noble 著 毛顺兵 张婷婷 陈宇 沈鑫 任灿江 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。 3.1 下载并安装Processing ...
  • Linux input子系统分析

    2016-02-25 22:37:11
    同时,input子系统的分层架构思想在Linux驱动设计中极具代表性和先进性,因此对Linux input子系统进行深入分析很有意义。 一、input子系统知识点 完整的input子系统分析包括以下几方面: 1) 软件层次 2...
  • linux C编程

    2020-07-30 23:33:06
    <br>目录 <br>第1章 Linux下C语言编程简介 1 1.1 Linux简介 1 1.2 C语言的简介和特点 4 1.3 Linux程序设计基础知识 5 1.3.1 程序安装目录 5 1.3.2 头文件 5 1.3.3 库文件 ...
  • Linux实用教程(第三版)

    2020-03-20 13:28:43
    第一章 Linux系统初步了解 本章内容 1.1 Linux系统简介 1.2 Linux系统的特点和组成 1.3 Linux版本介绍 1.4 Red Hat Linux系统概述 1.1 Linux系统简介 1.1.1 什么是Linux 1.1.2 Linux系统的产生 1.1.3 Linux...
1 2 3 4 5 ... 20
收藏数 6,842
精华内容 2,736
关键字:

linux窗口程序设计 pdf