1. 切换用户
Linux是一个多用户的操作系统, 可以同时登陆多个用户, 因此很多时候需要在多个用户之间切换, 用户切换需要使用su或者su -。使用su只切换用户, 当前的工作目录不会变化, 但是使用 su -不仅会切换用户也会切换工作目录, 工作目录切换为当前用户的家目录。
从用户A切换到用户B, 如果还想再切换回用户A,可以直接使用 exit。
1234567891011121314151617# 只切换用户, 工作目录不变$ su 用户名# 举例:robin@OS:~/Linux$ su luffyPassword: # 需要输入luffy用户的密码luffy@OS:/home/robin/Linux$ # 工作目录不变# 切换用户和工作目录, 会自动跳转到当前用户的家目录中$ su - 用户名# 举例:robin@OS:~/Linux$ su - luffyPassword: # 需要输入luffy用户的密码luffy@OS:~$ pwd/home/luffy # 工作目录变成了luffy的家目录# 回到原来的用 ...
1. cd 命令
在Linux终端中如果想要进行工作路径的切换, 需要使用cd命令。在进行目录的切换的时候, 我们可以使用相对路径也可以使用绝对路径。
进入指定目录
1$ cd 目录名
目录名: 使用相对路径/绝对路径都可以, 该路径必须是一个有效路径
特殊的目录:
..: 表示当前目录的上一级目录, 使用cd .. 或者 cd ../都可以
. : 表示当前目录, 使用 .或者./都可以, cd .不会切换目录
进入家目录
每个用户(普通用户和root)都有一个属于自己的目录, 比如:
robin是普通用户, 家目录: /home/robin
luffy是用户, 家目录: /home/luffy
root是管理员用户, 家目录: /root
按照上边的格式来表示家目录书写起来比较麻烦, 有一种相对简单的写法就是使用 ~ 表示。如果是使用cd命令切换到家目录, 后边可以什么路径都不加, 这样也可以进入到当前用户的家目录。综上所述也就是通过cd进入到当前用户的家目录一共有三种不同的方式。
1 ...
Linux
未读1. Linux介绍1.1 Linux的诞生
1991年,GNU计划已经开发出了许多工具软件,最受期盼的GNU C编译器已经出现,GNU的操作系统核心HURD一直处于实验阶段(GNU工程从1984年起就在做这件事),没有任何可用性,实质上也没能开发出完整的GNU操作系统。
也是这一年, Linux诞生了, Linux 是 UNIX 操作系统的一个克隆系统, 但是Linux是开源的。 那时候它只是一个系统内核, 没有与之配套的应用软件,这时候 Linux 和 GNU一拍即合, 就有了我们现在使用的操作系统,GNU奠定了Linux用户基础和开发环境。
Linux时间线
1991年初,林纳斯·托瓦兹开始在一台386sx兼容微机上学习minix操作系统。
1991年4月,林纳斯·托瓦兹开始酝酿并着手编制自己的操作系统。
1991 年4 月13 日在comp.os.minix 上发布说自己已经成功地将 bash 移植到了minix 上,而且已经爱不释手、不能离开这个shell软件了。
1991年的10月5日,林纳斯·托瓦兹在comp.os.minix新闻组上发布消息,正式向外宣布L ...
文章中主要介绍了Qt中常用的容器控件, 包括: Widget, Frame, Group Box, Scroll Area, Tool Box, Tab Widget, Stacked Widget。 关于这些控件的使用除了文字描述、代码演示, 还有相关的视频讲解,赶紧给自己充电吧…
1. QWidget
关于QWidget在前面的章节中已经介绍过了, 这个类是所有窗口类的父类, 可以作为独立窗口使用, 也可以内嵌到其它窗口中使用。Qt中的所有控件都属于窗口类, 因此这个类也是所有控件类的基类。如果一个窗口中还有子窗口, 为了让子窗口有序排列, 这时候我们可以选择一个QWidget类型的容器, 将子窗口放到里边, 然后再给这个QWidget类型窗口进行布局操作。在这里给大家介绍一下关于这个类的一些属性,因为这个类是所有窗口类的基类,因此相关属性比较多,详细讲解可以观看视频。
关于这些属性大部分都有对应的API函数, 在属性名前加 set即可, 大家可以自己从 QWidget这个类里边搜索, 并仔细阅读关于这些函数的参数介绍。
在Qt中我们除了使用QWidget类型窗口作为容器 ...
文章中主要介绍了Qt中常用的按钮控件, 包括: QAbstractButton, QPushButton, QToolButton, QRadioButton, QCheckBox。 关于这些控件的使用除了文字描述、代码演示, 还有相关的视频讲解,赶紧给自己充电吧…
1. 按钮基类 QAbstractButton
在QT中为我们提供了可以直接使用的按钮控件, 如下图。这些按钮种类虽然繁多, 但是它们都拥有相同的父类 QAbstractButton。这些子类按钮的大部分属性都是从这个基类继承的,因此搞明白这个类为我们提供的相关功能还是非常重要的。其中Dialog Button Box比较特殊不是一个单一控件, 它是两个QPushButton的组合并且水平排列, 这个不能作为一个新控件来研究。
这些按钮控件之间的继承关系如下图:
下边从功能的视角, 给大家介绍一下QAbstractButton中的一些常用API
1.1 标题和图标1234567891011121314// 参数text的内容显示到按钮上void QAbstractButton::setText(cons ...
如果想要在某一窗口中显示右键菜单, 其处理方式大体上有两种, 这两种方式分别为基于鼠标事件实现和基于窗口的菜单策略实现。其中第二种方式中又有三种不同的实现方式, 因此如果想要在窗口中显示一个右键菜单一共四种实现方式, 下面依次为大家讲解…
1. 基于鼠标事件实现1.1 实现思路
使用这种方式实现右键菜单的显示需要使用事件处理器函数, 在Qt中这类函数都是回调函数, 并且在自定义窗口类中我们还可以自定义事件处理器函数的行为(因为子类继承了父类的这个方法并且这类函数是虚函数)。实现步骤如下:
在当前窗口类中重写鼠标操作相关的的事件处理器函数,有两个可以选择
1234// 以下两个事件二选一即可, 只是事件函数被调用的时机不同罢了// 这个时机对右键菜单的显示没有任何影响[virtual protected] void QWidget::mousePressEvent(QMouseEvent *event);[virtual protected] void QWidget::mouseReleaseEvent(QMouseEvent *event);
在数据表事件处理器函数内部判断是否 ...
内容摘要:文章中主要介绍了Qt的窗口布局以及使用, 主要内容包括: 布局的样式, 基于UI界面设置布局, 基于API设置布局。 文章中除了关于知识点的文字描述、代码演示, 还有相关的视频讲解。
1. 布局的样式
Qt窗口布局是指将多个子窗口按照某种排列方式将其全部展示到对应的父窗口中的一种处理方式。在Qt中常用的布局样式有三种,分别是:
布局样式
描述
行数
列数
水平布局
布局中的所有的控件水平排列
1行
N列(N>=1)
垂直布局
布局中的所有的控件垂直排列
N行(N>=1)
1列
网格(栅格)布局
布局中的所有的控件垂直+水平排列
N行
N列 (N>=1)
1234567891011有问有答: 1. 控件的位置可以通过坐标指定, 为什么还要使用布局? - 坐标指定的位置是固定的, 当窗口大小发生改变, 子窗口位置不会变化 - 使用坐标指定子窗口位置, 这个控件可能会被其他控件覆盖导致无法显示出来 - 使用布局的方式可以完美解决以上的问题 - 一般在制作窗口的过程中都 ...
内容摘要:文章中主要介绍了Qt中常用的窗口类, 主要内容包括: 窗口类的基类QWidget, 对话框基类QDialog, 带菜单栏工具栏状态栏的QMainWindow, 消息对话框QMessageBox, 文件对话框QFileDialog, 字体对话框QFontDialog, 颜色对话框QColorDialog, 输入型对话框QInputDialog, 进度条对话框QProgressDialog, 资源文件。 文章中除了关于知识点的文字描述、代码演示, 还有相关的视频讲解,开始学习。。。
1. QWidget
QWidget类是所有窗口类的父类(控件类是也属于窗口类), 并且QWidget类的父类的QObject, 也就意味着所有的窗口类对象只要指定了父对象, 都可以实现内存资源的自动回收。在1.1 Qt入门章节中已经为大家介绍了QWidget的一些特点, 为了让大家能够对这个类有更深入的了解, 下面来说一说这个类常用的一些API函数。关于这个窗口类的属性介绍, 请参考容器控件之QWidget。
1.1 设置父对象123456789// 构造函数QWidget::QWidg ...
在进行窗口程序的处理过程中, 经常要周期性的执行某些操作, 或者制作一些动画效果,看似比较复杂的问题使用定时器就可以完美的解决这些问题, Qt中提供了两种定时器方式一种是使用Qt中的事件处理函数这个在后续章节会给大家做细致的讲解,本节主要给大家介绍一下Qt中的定时器类 QTimer的使用方法。
要使用它,只需创建一个QTimer类对象,然后调用其 start() 函数开启定时器,此后QTimer对象就会周期性的发出 timeout() 信号。我们先来了解一下这个类的相关API。
1. public/slot function12345678910111213141516171819202122232425262728293031323334// 构造函数// 如果指定了父对象, 创建的堆内存可以自动析构QTimer::QTimer(QObject *parent = nullptr);// 设置定时器时间间隔为 msec 毫秒// 默认值是0,一旦窗口系统事件队列中的所有事件都已经被处理完,一个时间间隔为0的QTimer就会触发void QTimer::setInterval ...
内容摘要:文章中主要介绍了Qt中的信号槽, 主要内容包括: 信号槽的本质, 信号槽的关系, 标准信号槽的使用, 自定义信号槽的使用, 信号槽的拓展, Lambda表达式。 文章中除了关于知识点的文字描述、代码演示, 还有相关的视频讲解,赶紧学起来吧。
1. 信号和槽概述
信号槽是 Qt 框架引以为豪的机制之一。所谓信号槽,实际就是观察者模式(发布-订阅模式)。当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal)。这种发出是没有目的的,类似广播。如果有对象对这个信号感兴趣,它就会使用连接(connect)函数,意思是,将想要处理的信号和自己的一个函数(称为槽(slot))绑定来处理这个信号。也就是说,当信号发出时,被连接的槽函数会自动被回调。这就类似观察者模式:当发生了感兴趣的事件,某一个操作就会被自动触发。
1.1 信号的本质
信号是由于用户对窗口或控件进行了某些操作,导致窗口或控件产生了某个特定事件,这时候Qt对应的窗口类会发出某个信号,以此对用户的挑选做出反应。
因此根据上述的描述我们得到一个结论 – 信号的本质就是事件,比如:
按钮单击 ...